关于#c语言#的问题,请各位专家解答!

#include<stdio.h>
int main()
{
int a,b,k;a=-1,b=4;
k=(a++<0)&&!(b--<=0);
printf("%d %d %d",k,a,b);
return 0;
}
为什么输出的值是1 0 3呀

突然想起来挺久没复习C了......
一行一行来看
a刚开始被赋值为-1
b被赋值为4
a++<0中,a++不是++a,所以在计算<0时a的值并没有自增,也就是a的值还是-1,即a++<0就是 -1<0,结果是1
b--与a++同理,即4<=0,结果是0
而!则是将b--<=0的结果0变成了1
到现在就已经很清楚了, 1&&1的结果为true,也就是1
(&&的判断依据是x和y均为true,取值是true,否则取值是false)
k = 1
a因为自增过一次所以 a == 0
b因为自减过一次所以 b == 3

a ++ < 0 为真然后a 自加a = 0
b -- < 0为假然后b自减b = 3
!(b-- < 0)就为真
k = 两个真相与所以为真,也就是1