我对这个问题感到非常愚蠢。但无法自行找出原因。这是如何评估?
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
。
但是,如果我在我的源文件中给出相同的语句,它会给出l值错误。
如何的target+buffer
值被印刷40.
通过调试程序进行调试可以帮助您。 – benjymous
你不是[试图用C编译器编译](http://stackoverflow.com/a/10654019/335858),是吗? – dasblinkenlight
我很确定这是由于排序而导致的未定义行为。 – Bathsheba