黑马程序员技术交流社区

标题: 有道iOS练习题不会,请教大神们解答 [打印本页]

作者: 张国繁    时间: 2015-6-20 11:54
标题: 有道iOS练习题不会,请教大神们解答
#include<stdio.h>
int main()
{ int y=10;
    do{y--;}
    while(--y);
    printf("%d\n",y--);
}

这个怎么运行的?我为啥得出2呢?
作者: zilin    时间: 2015-6-20 12:41
最后一次while判断是y=1然后--y=0,while结束了输出0,y变成了-1.我是这么想的。
作者: fanxing    时间: 2015-6-20 12:46
没有输出2啊
输出的是0啊
作者: 张亚超2015    时间: 2015-6-20 13:13
zilin 发表于 2015-6-20 12:41
最后一次while判断是y=1然后--y=0,while结束了输出0,y变成了-1.我是这么想的。 ...

“y--”去取代  %d  吧?
作者: 晗修    时间: 2015-6-20 13:31
不管循环体内怎么写 只要没有break  while(--y) 一定是在y=0时 结束  打印的时候  打印的是y--  也就是先打印 后自减 输出为0
作者: 张国繁    时间: 2015-6-20 13:39
fanxing 发表于 2015-6-20 12:46
没有输出2啊
输出的是0啊

我知道答案是0,但是我不知道为啥得出的0,我自己感觉是2
作者: 蓝海悦    时间: 2015-6-20 14:28
问题解决了吗?   如果还有不清楚的地方可以留言

未命名.jpg (108.4 KB, 下载次数: 25)

未命名.jpg

作者: 丁铭检    时间: 2015-6-20 18:27
分析的够漂亮。。。
作者: XiaoBaoMi    时间: 2015-6-20 19:30
最后 --y是-1 y--是0。 2的话 建议多看看书吧,概念没理解
作者: 18425178    时间: 2015-6-20 21:46
不错不错膜拜楼上
作者: 萤火虫小oneone    时间: 2015-6-20 21:48
7楼正解,有时候做题的时候用注释的方式分析分析还是挺有用的.
作者: 小年轻不见了    时间: 2015-6-20 21:49
y=-1,y--=0,这里打印的是y--的值不是y的值,是0
作者: 白0702    时间: 2015-6-20 22:38
围观学习
作者: 马贺飞    时间: 2015-6-22 23:47
围观学习
作者: JamesLucky    时间: 2015-6-22 23:52
输出为0,正解,这里高手如云
作者: aludiba    时间: 2015-6-23 11:54
楼主觉得是2,是没搞明白do while循环中y在哪里做得最后一次运算。当条件不成立的时候跳出循环,所以y的最后一次运算肯定是在while后面。条件语句中变量的运算都是对变量得有效改变。
作者: GBB    时间: 2015-6-23 14:40
是没搞懂do while 和自减操作吧
作者: aofex    时间: 2015-6-23 20:35
学习 学习了
作者: pp584995727    时间: 2015-6-23 22:02
首先循环退出的条件是--y的表达式的值是0,所以当循环退出时y=0,所以最后y--表达式的值为0
作者: pp584995727    时间: 2015-6-23 22:04
首先循环退出的条件是--y的表达式的值是0,所以当循环退出时y=0,所以最后y--表达式的值为0
作者: 沙睿    时间: 2015-6-23 22:06
7楼正解~ ~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2