求教一道二级C语言的问题!

在教材上看到的一个题:
有以下程序段:
int x = 3;
do
{ printf("%3d",x-=2);
}
while(!(--x));
程序段的输出结果是
A)1 B)3 0 C)1 -2 D)死循环

我没有搞明白那个while语句括号内的东西,能帮我解释一下这个内容以及程序的运作过程么?谢谢!

while(!(--x));就是判断里面的(!(--x))是真是假
假的话就结束
一开始x=3,然后到printf里的x-=2;x就变成=1
然后去到while里进行判断为真
就继续循环一次~然后x再变成-2
再while里判断~就为假~就结束循环~
所以选C
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-24
do是先执行再循环
先执行循环体内的i=3-2=1
输出1
接着下面的while一次--i
1-1=0;外面有个!0接着循环一次
1-2=-1;再一次--i=-2
这一次!运算为0终止整个程序
相似回答