在赋值操作中评估操作数

时间:2013-07-03 19:55:55

标签: c operators assignment-operator operator-precedence

在此link,声明

  

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

很明显,在表达式中

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

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

这个问题可能看起来很愚蠢,但我对此感到困惑。如果foo1()foo2()foo3()abc替换,上述陈述是否也是正确的?如:

a = b = c = 7;

1 个答案:

答案 0 :(得分:3)

情况完全一样。唯一的区别是,在第二个示例中,abc没有副作用。无论您的编译器实现决定对它们进行评估,结果仍然是相同的,因为没有任何评估可以做任何事情。