int a=-1,b=4,k;
k=(+ +a<0)&&!(b - -<=0);
printf("%d,%d,%d\n",k,a,b);
第二行是啥意思 为啥是0 0 4
++a a进行其他值操作前先自增1 这时候a=0
a<0不成立 &&运算只要前置条件为非 那么后置条件就不会执行 这时k=0
b值没操作不变 b=4
所以 最终值 k:0 a:0 b:4
++a先于整个表达式执行
所以等价于
++a;
k=a<0 && b--<=0;
&&是逻辑与,具有短路特性,当a<0为假,则不继续执行后续的表达式
所以b的值不变
k的值是false
当你以int类型打印bool值时,true是1,false是0