自加自减后对输出结果的判断

int a=-1,b=4,k;
K=(++a<0)&&!(b--<=0);
printf ("%d %d\n",a,b);
答案他的输出结果是 0 4
b的值不是先参与运算以后自减了吗,为什么b的输出值还是4

++a是先加再赋值,b--是先赋值再减。但是&&在,所以直接判断失败,后面的就不执行/判断了。b--压根就没执行,只执行了++a

(++a<0) 这个式子先运算,得到 0 ,0 && (后面不管什么) 都得到 0 ,所以后面的表达式不会执行。

因为&&是逻辑与,有短路特性