Этот код C производит "неопределенное поведение"? - PullRequest
1 голос
/ 14 мая 2011

Я читаю интересную статью Руководство по неопределенному поведению в C и C ++, часть 1 по неопределенному поведению в C и C ++. Часто я делаю в своем коде следующее:

int i = 10;
i = (++i) % 7;

Это приводит к неопределенному поведению? На х86? РУКА? Возможно, это зависит от компилятора?

Ответы [ 2 ]

8 голосов
/ 14 мая 2011

Это неопределенное поведение, потому что i изменяется более одного раза без промежуточной точки последовательности.

Это зависит от компилятора только в том смысле, что нет никаких требований относительно того, что будет делать код, поэтому каждый компилятор может делать что-то свое. Чтобы быть ясным - только потому, что , даже если вы получаете результаты, которые, кажется, имеют смысл (иногда), код является ошибкой.

...