0

在此链接中,声明说

子表达式的求值顺序,包括运算符的操作数(例如,+、-、=、*、/)是未指定的。

很明显,在表达式中

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

运算符的操作数=可以按任何顺序求值。您的编译器可以自由选择(链接,由Ralph Tandetzky回答)。

这个问题可能看起来很愚蠢,但我对此感到非常困惑。foo1()如果、foo2()foo3()被 、 和 代替ab上述陈述是否也成立 c?如:

a = b = c = 7;
4

1 回答 1

3

这是完全相同的情况。唯一的区别是,在您的第二个示例中ab, 和c没有副作用。无论您的编译器的实现决定以哪种方式评估它们,结果仍然是相同的,因为没有任何评估做任何事情。

于 2013-07-03T19:58:33.717 回答