C语言问题21

来源:百度知道 编辑:UC知道 时间:2024/06/01 17:30:43
int x=3;
do{printf("%3d",x-=2);}while(!(--x));
运行结果及解释
while(!(--x))中对x进行--运算后结果返回到循环体吗

结果 1 -2
因为先执行x=3-1就是1
--x后就是0
!0为非0,为真,
继续执行x=x-2 再打出-2
!-3为0 为逻辑假 所以退出循环

printf之后x=1,输出" 1"
--x后x=0,!x=1,继续循环
printf之后x=-2,输出" -2"
--x后x=-3,!x=0,退出循环