问题
单项选择题
有以下程序段:
int x=3
do
printf("%d",x-=2);
while (!(--x));
其输出结果是( )。
A.1
B.3 0
C.1 -2
D.死循环
答案
参考答案:C
解析: 在程序中,首先定义了一个整型变量x并赋初值为3,接着执行do-while循环。在do-while循环中,先执行循环体,即执行printf语句(输出表达式X-=2;的值,这个表达式相当于x=x-2=3-2=1,所以第一次输出值为1),接着判断while后面括号里的条件表达式是否为真。这个表达式!(--X)等价于!(0)为真(这里--X是先自减,再进行判断,此时x自减1,值为0),继续执行循环体,即执行printf语句(输出表达式x-=2;的值,这个表达式相当于x=x-2=0-2=-2,所以第二次输出值为-2),接着判断while后面括号里的条件表达式是否为真,显然,表达式!(--x)等价于(!(-3))为假,退出循环,所以其最终的输出结果为1-2。所以,4个选项中选项C符合题意。