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;
}
Run Code Online (Sandbox Code Playgroud)
我认为&&有更多的优先权|| 根据这个逻辑++j应该执行,但它永远不会和程序输出-2 2 0 1.这里发生了什么?中间步骤是什么?
复合逻辑AND/OR 表达式中的各个表达式是否应该在将逻辑运算符应用于其结果之前首先进行求值?为什么在以下程序++k的条件中不受影响m = ++i && ++j || ++k:
#include<stdio.h>
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;
}
Run Code Online (Sandbox Code Playgroud)
输出: -2,3,0,1
但我期待输出 -2,3,1,1