逻辑运算的,有点小问题

#include<stdio.h>
void main ()
{
int a=-1,b=1,k;
if ((++a<0)&&!(b--<=0))
printf("%d %d\n",a,b);
else
printf("%d %d\n",b,a);
}

b--<=0,运算的话相当于0<=0对吧,所以说表达式是真的,前面有个!,这个时候表达式就成假的了对吧,我不明白的点在于这个b的值在整个代码中的变化,有大佬能详细讲解一下吗

先比较,再自减