-8

コードの出力はどうなりますか

int a=3,b=4;
++a*=++b;
cout<<a<<endl;

コンパイラはa=20出力precedenceを表示しoperator associativity ます。ここでどのように使用されていますか?

私が理解していることは次のとおりです。

最初bにその演算子の左側++a*=++b;がインクリメントされ、unary次にその演算子の順番が来る*=ので、式が次の++a = a * ++b;ようになりa=3b=5今は次のようになり15、その後15に割り当てられてaインクリメントされます.最終的に取得しますが16、コンパイラは次のようにします20

4

1 に答える 1

1

特定のコンパイラの特定のケースでは、最初に a が 4 にインクリメントされ、b が 5 にインクリメントされ、次に a *= b が実行され、a が 20 (4*5) になるようです。ただし、コメントで言及されているように定義された動作ではないため、他のコンパイラは異なる結果をもたらす可能性があります

于 2013-04-22T21:13:11.420 に答える