C语言程序输出结果问题

为什么第二个程序b的值加个 与 怎么就变成4了


#include <stdio.h>
int main()
{
int a=-1,b=4,k;
!(b--<=0);
printf("%d %d\n",a,b);
}
    
//运行结果:-1 3
#include <stdio.h>
int main()
{
int a=-1,b=4,k;
0&&!(b--<=0);
printf("%d %d\n",a,b);
}
 //运行结果:-1 4

&&是短路与,前面为假,后面不会执行的