int x=3; do printf("%d\n",x-=2); while(!(--x)); 须详细答案

如题所述

x=3 由于是DO_WHILE循环 所以先执行循环语句,x-=2后 x=1 所以第一个打印结果是1,然后进入判断!(--x)条件是否为真,由于此时X=1,--x结果为0,由于前面有! 所以while循环条件满足,再次进入循环体,此时x为0 执行x-=2之后输出结果为-2,再次进入循环判断,此时x值为-2,--x后为-3,循环条件不满足,则退出循环。所以最终打印结果为1,-2;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-07-10
步骤a.
x=3; -> x=1 -> while(!0) -> 即while(1) -> 非0即为真 -> whiel循环中为真
-> 继续执行步骤b
步骤b.
x=0; -> x=-2; -> --x 得x=-3; ->此时的while循环中为!(-3)
-> 执行结束,跳出循环
解释b步骤中跳出循环的原因:
因为:在C语言中,非0即为真 -> 可以看成 !0 == 1, 即假设 !x == 1
要使假设成立,则此时 x==0 才能满足 !x == 1 这个条件。
又因为:b步骤中最后x==-3,-3 != 0 ,即!(-3) != 0
所以:条件不满足(while中不为1),跳出循环
所以:最后输出1和-2,而不是死循环
第2个回答  2012-05-15
输出结果:1
-2
第3个回答  2012-05-15
解答什么?