有关do while的问题

int x=23; do{ printf("%2d",x - -); }while(!x);最后的!x是什么意思

如果x是0 那么 !x 就是1 即true 如果x不是0 那么!x 就是0 即false

x为0时,!x为真
否则!x为假

!x表示对x取反,当x=0时,!x=1; 当x!=0时,!x=0; 这段代码的意思是:输出x,然后令x=x-1,直到x!=0。由于先执行循环体,在检查while条件是否符合,所以会输出:23。之后由于x!=0,满足!x=0,所以不继续执行循环体。

!x就是x==0继续执行While操作,否则不再执行