-1

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

スタック オーバーフローに関する非常に良い質問がありました。

i = 0 の場合、(i += i++) が 0 に等しいのはなぜですか?

しかし、C で同じコードを試してみると、異なる結果が得られました。

int i = 0;          
i += i++;          // 1 in C and 0 in C#
printf("%d", i);

ただし、次のとおりです。

i = i++ + i;       // 1 in C and 1 in C#
i += i++ + i;      // 1 in C

C# では、++and=+演算子を評価します。まず、tempVar各 fo に代入し、 に対して操作を実行しtempVarsます。Cはそれをどのように実装しますか? それともアーキテクチャによって異なりますか?

4

1 に答える 1

0

C 標準では、評価の順序は指定されていません。それはコンパイラの実装に任されています。

于 2012-11-28T02:30:15.137 に答える