Предупреждение о неопределенном приращении на int - PullRequest
1 голос
/ 01 апреля 2012

У меня странная проблема с avr-gcc.Если я сделаю это:

int i = 0;
i = ++i;

Это приведет к предупреждению компилятора:

warning: operation on ‘i’ may be undefined

Что здесь не так?

Если оно переписано в

i = i + 1;

Это не приводит к предупреждению.

avr-gcc - это версия 4.3.4, и я запускаю это на Ubuntu 10.04.

1 Ответ

8 голосов
/ 01 апреля 2012

Если вы намеревались просто увеличить i, тогда используйте либо

i = i + 1;

или

++i;

(или i++), но не оба одновременно. Правила C не позволяют вам дважды изменять переменную перед одной точкой последовательности. И преинкремент (++i), и присвоение (i =) изменяют значение i.

...