Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
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 で実行しています。
単純に をインクリメントする場合は、次のいずれかiを使用します
i
また
++i;
(またはi++)、両方ではありません。C の規則では、1 つのシーケンス ポイントの前で変数を 2 回変更することは許可されていません。プリインクリメント ( ++i) と代入 ( i =) の両方が の値を変更しますi。
i++
++i
i =