1

私はC言語が初めてなので、sum1が助けてください。書かれたACコード

int i=3;
printf("%d",++i + ++i);

コンパイラは O/P =9 を与えます。どのように?

4

1 に答える 1

4

結果は未定義です。式 (より正確にはシーケンス ポイント)で変数を複数回変更しています。

シーケンス ポイント間で変数を複数回変更することは定義されていないため、実行しないでください。

++i + ++iこの特定のケースでは、次のように評価することを決定するため、コンパイラである可能性があります

  • last をインクリメントして++i4 を生成し、i を 4 のままにします
  • 最初の をインクリメントし、++i5 を生成し、i を 5 のままにします (前のステップで i を 4 のままにして、5 にインクリメントします)。
  • 2 つの値を合計すると、4 + 5 になります。

別のコンパイラ、または最適化レベルを変更した場合、またはコードをわずかに変更した場合、異なる出力が生成される可能性があります。

于 2010-09-28T12:59:39.537 に答える