在此link,声明
子表达式的评估顺序,包括运算符的操作数(例如,+, - ,=,*,/)是未指定。
很明显,在表达式中
foo1() = foo2() = foo3() = 7; // snippet of C++ code
可以按任何顺序评估=
运算符的操作数。您的编译器可以自由选择(link,由 Ralph Tandetzky 回答)。
这个问题可能看起来很愚蠢,但我对此感到困惑。如果foo1()
,foo2()
和foo3()
被a
,b
和c
替换,上述陈述是否也是正确的?如:
a = b = c = 7;
答案 0 :(得分:3)
情况完全一样。唯一的区别是,在第二个示例中,a
,b
和c
没有副作用。无论您的编译器实现决定对它们进行评估,结果仍然是相同的,因为没有任何评估可以做任何事情。