while(!x)有关问题

while(!--x)问题int x3;do {printf(“%3d”,x-2);}while(!(--x));//X不为零时执行do操作A)1B)3 0C)1 -2D)

while(!--x)问题
int x=3;
  do {printf(“%3d”,x-=2);} 
  while(!(--x));//X不为零时执行do操作
A)1 B)3 0 C)1 -2 D)死循环  

为什么是选C呢?
而这句话while(!(--x))又是什么意思

[解决办法]
先减,再用减完的值判断。