Mer*_*soy 0 c++ operators post-increment
在执行下面的代码后发生了什么?
int x = 10;
x += x--;
Run Code Online (Sandbox Code Playgroud)
我期待结果19(将x添加到x然后将x减1)但结果为20.它如何在窗帘后面工作?谢谢你的回答.
这种情况下的行为在C++ 17之前是未定义的,参见例如https://en.cppreference.com/w/cpp/language/eval_order#Undefined_behavior,所以如果你的编译器不符合它,那就没用了测试或试图理解它:它将取决于实现,甚至编译器的版本.
如果您的编译器符合C++ 17,则可以保证在评估左侧之前,在简单或复合赋值(=或+=分别)中,右侧的所有副作用都将被处理.
在您的情况下,x--评估是10伴随着设置x=9为其副作用,然后计算机将添加10到x=9结果x=19.
感谢Micha?因为他的纠正,我把它纳入了答案.
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |