标签: c operators logical-operators
我正在尝试编程,我写了一个小代码,但我无法理解这个
#include<stdio.h> int main() { int x,y,z,k; x=y=z=k=1; z=x++||y++&&k++; printf("%d %d %d %d\n",x,y,z,k); }
我期待输出为2 1 1 2 因为&amp;&amp;的优先权超过|| 但输出是2 1 1 1 请解释一下。
答案 0 :(得分:5)
C使用short-circuit evaluation,因此当x++被评估为true时,其余的表达式不会被评估,也不会发生增量。
x++
true