-4

int x=5;式が次のようy=++x * ++x;に評価されるとします。

最初に原因を実行++xx=6、次に再び式++xを引き起こしx=7、評価y=x*xして値を作成しますy=49 同じ理由を使用して、次のコード行

int z=5, x=5,y=0,p=0;
y=++x * ++x + ++x;
p= ++z + ++z * ++z;

yandの同じ値を評価する必要がありpましたが、コンパイラは異なる答えを生成します。優先順位に欠けているものがあると思います。

4

1 に答える 1

3

どちらの式も、シーケンス ポイントを介在させずに値を複数回変更しようとすることで、未定義の動作を引き起こします。あなたの質問に対する一般的な答えはありません。

于 2013-03-16T15:11:10.077 に答える