1

重複の可能性:
誰でもこれらの未定義の動作を説明できますか (i = i++ + ++i 、 i = i++ など…)

プログラムに式があり、初期値はi = 10

int j = i++ + i++;

それは設定しますj as 20 が、

int j = i++ + ++i;

j as 22
ステートメント間に 2 の違いがあるのはなぜですか? 私は、違いは1であるべきだと思います。
これはCでは定義されていませんが、なぜGCCそのようなことをしているのですか?

4

1 に答える 1

-1

i++ の場合は次のようになります。最初に方程式を実行してから、i をインクリメントします。

++ の場合、i は次のようになります。最初に i をインクリメントしてから、方程式を実行します。

i++ + ++i は i + (++(++i)) と解釈されるので、結果は 22 になります。

有線の構文では有線のことが起こりますが、このようなことはしないでください;)。

私が正しければ、++i + ++i も 22 になります。

于 2012-10-28T20:12:34.120 に答える