【发布时间】:2013-10-25 08:05:47
【问题描述】:
我觉得问这个问题很愚蠢。但我自己无法弄清楚原因。
int main()
{
int target;
int buffer =10;
const int source = 15;
target = (buffer+=source) = 20;
cout << target+buffer;
return 0;
}
target = (buffer+=source) = 20; 将变为 target = (25) = 20。
但如果我在源文件中给出相同的语句,则会给出左值错误。
target+buffer 的值如何打印 40。
【问题讨论】:
-
使用调试器单步执行会对您有所帮助。
-
我很确定这是由于排序导致的未定义行为。
-
@Bathsheba 的括号不足以确保正确排序?
-
@Dariusz 不,括号仅确保关联性。
标签: c++