C语言while提问

#include
int main(){
int a;
a=2;
while(a++);
printf("%d",a);
}
#include
int main(){
int a;
a=2;
while(a--);
printf("%d",a);
}
请问一下,为什么这两道输出分别是1和-1,循环结构没有表达式2不应该是死循环吗?

重点是变量的取值范围,a是int类型,a++到最大值后,再加一就变成最小值了,a--到最小值后,再减一就变成最大值了。取值是闭环的,不管是累加还是递减,肯定会取到0值,然后while循环就退出了,所以这两个都不是死循环。

0为假,非0为真。
while(a++); 死循环,
while(a--); 当a为0时False,跳出循环,因为后置--,输出-1