0

このリンクでは、次のように述べられています。

演算子のオペランド (+、-、​​=、*、/ など) を含む部分式の評価順序はUnspecifiedです。

という表現で明らかです。

 foo1() = foo2() = foo3() = 7; // snippet of C++ code

演算子のオペランドは=任意の順序で評価できます。コンパイラは自由に選択できます (リンクRalph Tandetzkyによる回答)。

この質問はばかげているように見えるかもしれませんが、私はこれについて本当に混乱しています。、 、 が、、に置き換えられた場合foo1()、上記のステートメントも当てはまります か? 次のように:foo2()foo3()abc

a = b = c = 7;
4

1 に答える 1

3

まったく同じ状況です。唯一の違いは、2 番目の例ではa、 、b、およびcに副作用がないことです。コンパイラの実装がそれらを評価する方法を決定しても、評価は何もしないため、結果は同じです。

于 2013-07-03T19:58:33.717 に答える