重複の可能性:
未定義の動作とシーケンス ポイント
次のマクロを理解できません。
#define CUBE(x) ((x)*(x)*(x))
私のコード:
int y=5;
print("Cube = %d",CUBE(++y));
このコードは 512 を出力します (Microsoft Visual Studio を使用)
私はこれが印刷されることを期待していました: ((++5)*(++6)*(++7)) = (6*7*8) = 336
.
これはどのように評価されますか?
また、同じコードが Dev C++ コンパイラを使用してコンパイルされ、結果は 392 です!!!
まったく同じコードに対して 2 つのコンパイラが異なる結果を示す理由を誰か説明できますか?
これはどのように++y
評価されますか?