c,按位,逻辑表达式

Jos*_*son 0 c

int x = 0;
x^=x || x++ || ++x;
Run Code Online (Sandbox Code Playgroud)

x的答案最后是3.如何分析这个表达式?对此有点困惑.非常感谢.

Oli*_*rth 7

这是未定义的行为.结果可能是任何事情.这是因为在和之间没有序列点,所以不能保证首先"完成".++xx ^=

  • 没有序列点是不正确的:`||`运算符总是一个序列点.导致UB的唯一两个修改是最后一个`++ x`和`x ^ =`. (3认同)