Joh*_*Lui 1 c operator-precedence
#include <stdio.h>
int main(void) {
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)
我试图了解C中运算符的关联性和优先级.这里,输出结果是-2 3 0 1,但我认为输出应该是-2 3 1 1因为k也是预先递增的.为什么那不是答案?谢谢!
的||具有短路的评价,这意味着,如果左手侧是右手侧被仅评价false.在你的情况,这并不因为两者会发生i,并j有不同的值比0递增后,所以++k没有得到执行
当您具有&&LHS表达式求值的时,会发生相同的行为false