A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#include<stdio.h>
int main()
{ int y=10;
    do{y--;}
    while(--y);
    printf("%d\n",y--);
}

这个怎么运行的?我为啥得出2呢?

23 个回复

倒序浏览
最后一次while判断是y=1然后--y=0,while结束了输出0,y变成了-1.我是这么想的。
回复 使用道具 举报
没有输出2啊
输出的是0啊
回复 使用道具 举报
zilin 发表于 2015-6-20 12:41
最后一次while判断是y=1然后--y=0,while结束了输出0,y变成了-1.我是这么想的。 ...

“y--”去取代  %d  吧?
回复 使用道具 举报
不管循环体内怎么写 只要没有break  while(--y) 一定是在y=0时 结束  打印的时候  打印的是y--  也就是先打印 后自减 输出为0
回复 使用道具 举报
fanxing 发表于 2015-6-20 12:46
没有输出2啊
输出的是0啊

我知道答案是0,但是我不知道为啥得出的0,我自己感觉是2
回复 使用道具 举报
问题解决了吗?   如果还有不清楚的地方可以留言

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

未命名.jpg
回复 使用道具 举报
分析的够漂亮。。。
回复 使用道具 举报
最后 --y是-1 y--是0。 2的话 建议多看看书吧,概念没理解
回复 使用道具 举报
18425178 来自手机 中级黑马 2015-6-20 21:46:31
10#
不错不错膜拜楼上
回复 使用道具 举报
7楼正解,有时候做题的时候用注释的方式分析分析还是挺有用的.
回复 使用道具 举报
y=-1,y--=0,这里打印的是y--的值不是y的值,是0
回复 使用道具 举报
学习学习!
回复 使用道具 举报
围观学习
回复 使用道具 举报
围观学习
回复 使用道具 举报
输出为0,正解,这里高手如云
回复 使用道具 举报
楼主觉得是2,是没搞明白do while循环中y在哪里做得最后一次运算。当条件不成立的时候跳出循环,所以y的最后一次运算肯定是在while后面。条件语句中变量的运算都是对变量得有效改变。
回复 使用道具 举报
GBB 中级黑马 2015-6-23 14:40:57
18#
是没搞懂do while 和自减操作吧
回复 使用道具 举报
学习学习!
回复 使用道具 举报
aofex 中级黑马 2015-6-23 20:35:20
20#
学习 学习了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马