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)); 程序段的输出结果是?
展开
展开全部
(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
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
展开全部
第一次执行完 printf("%3d",x-=2); 后x=1,打印结果1
然后--x为0,取反后为1,条件为true,继续执行循环
第二次执行完 printf("%3d",x-=2); 后x=-2,打印结果是-2,--x得到-3,取反后是0,循环结束
然后--x为0,取反后为1,条件为true,继续执行循环
第二次执行完 printf("%3d",x-=2); 后x=-2,打印结果是-2,--x得到-3,取反后是0,循环结束
更多追问追答
追问
while括号里的不是应该是表达式吗?为什么出了数字?
追答
x的值是个数字,--x也是数字
!是逻辑非,对数字来讲就是0变成非0,非0变成0
然后对判断条件来讲,非零就执行,零就不执行
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C第一次执行完 printf("%3d",x-=2); 后x=1,然后--x为0,取反后为1,条件为true,继续执行循环,第二次执行完 printf("%3d",x-=2); 后x=-2,--x得到-3,取反后是0,循环结束
追问
为啥x=(-3)为真?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输出的结果是:
1 -2
1 -2
追问
解释了,好吗。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询