int x=3; do {printf("%3d",x-=2); } while(!(--x));

intx=3;do{printf("%3d",x-=2);}while(!(--x));程序段的输出结果是?... int x=3; do {printf("%3d",x-=2); } while(!(--x)); 程序段的输出结果是? 展开
 我来答
金色潜鸟
2014-07-24 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5612万
展开全部
(1)do 循环,先执行一次循环体,不管循环条件是真是假。
x -= 2; 是 x=x-2,x 等于1
输出 1
(2)进 while 条件判断
--x 是前缀减,需要先减1再使用,变 x=x-1=0
0 为假,非0 为真,所以 返回去 执行循环
(3) x -= 2; x 等于 -2
输出 -2
(4) 进 while 条件判断
--x 是前缀减,需要先减1再使用,变 x=-2-1 得 x=-3
-3 不是0, 不是0 就是 真。
做 !() 非运算, !( 真) 得 假
是假,所以 while 循环 结束。

答,执行本段 输出 1 -2
青芜_
推荐于2018-02-26 · TA获得超过291个赞
知道答主
回答量:128
采纳率:0%
帮助的人:65.2万
展开全部
第一次执行完 printf("%3d",x-=2); 后x=1,打印结果1
然后--x为0,取反后为1,条件为true,继续执行循环
第二次执行完 printf("%3d",x-=2); 后x=-2,打印结果是-2,--x得到-3,取反后是0,循环结束
更多追问追答
追问
while括号里的不是应该是表达式吗?为什么出了数字?
追答
x的值是个数字,--x也是数字
!是逻辑非,对数字来讲就是0变成非0,非0变成0
然后对判断条件来讲,非零就执行,零就不执行
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雨幼萱0d8
2014-07-23 · 超过58用户采纳过TA的回答
知道答主
回答量:113
采纳率:0%
帮助的人:107万
展开全部
C第一次执行完 printf("%3d",x-=2); 后x=1,然后--x为0,取反后为1,条件为true,继续执行循环,第二次执行完 printf("%3d",x-=2); 后x=-2,--x得到-3,取反后是0,循环结束
追问
为啥x=(-3)为真?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Oo风之子uU
2014-07-23
知道答主
回答量:1
采纳率:0%
帮助的人:1342
展开全部
输出的结果是:
1 -2
追问
解释了,好吗。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式