int main() {
int i = -3, j = 2, k = 0, m;
m = ++i || ++j && ++k;
printf("%d %d %d %d\n", i, j, k, m);
return 0;
}
我认为 && 的优先级高于 ||按照这个逻辑 ++j
应该执行,但它从来没有执行,程序输出 -2 2 0 1
。这里发生了什么?中间步骤是什么?
最佳答案
&&
确实比||
有更高的优先级,这意味着++i ||++j &&++k
解析为 ++i || (++j &&++k)
.
然而,这并没有改变 ||
的 RHS 仅在 LHS 返回 0
时才执行的事实。
优先级不影响求值顺序。
关于c++ - C表达式的评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3916177/