帮忙分析下这道题吧~~

来源:百度知道 编辑:UC知道 时间:2024/05/09 19:47:32
有以下程序段
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结构里的语句,所以x-=2后 x为1, 这时判断一下while中的条件, --x 自减后x 变为0, !0的值是1, 所以while 条件满足, 继续执行do里的语句, x-=2后x变为-2, 再判断!(--x) 这时只要--x的值不是0,!(--x)就为0, 所以退出do while循环。 答案为C