1

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 で実行しています。

4

1 に答える 1

8

単純に をインクリメントする場合は、次のいずれかiを使用します

i = i + 1;

また

++i;

(またはi++)、両方ではありません。C の規則では、1 つのシーケンス ポイントの前で変数を 2 回変更することは許可されていません。プリインクリメント ( ++i) と代入 ( i =) の両方が の値を変更しますi

于 2012-04-01T19:50:15.440 に答える