有以下程序段: int x=3 do { printf("%d",x-=2); } while (!(--x)); 其输出结果是( )。

admin2010-01-10  26

问题 有以下程序段:    int x=3    do    {  printf("%d",x-=2);  }    while  (!(--x));    其输出结果是(  )。

选项 A、1
B、3  0
C、1-2
D、死循环

答案4

解析 在程序中,首先定义了一个整型变量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符合题意。
转载请注明原文地址:https://kaotiyun.com/show/RGWp777K
0

最新回复(0)