鱼C论坛

 找回密码
 立即注册
查看: 3443|回复: 4

C循环的问题

[复制链接]
发表于 2012-9-1 20:30:53 | 显示全部楼层 |阅读模式
2鱼币
  1. #include<stdio.h>
  2. int main()
  3. {
  4. int a=1,b=10;
  5. do
  6. {b-=a;a++;}while(b--<0);

  7.     printf("a=%d,b=%d\n",a,b);
  8.        
  9. return 0;
  10. }
复制代码
为什么结果是a=2,b=8,  条件 b--<0是什么意思? 求解释!!!

最佳答案

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-9-1 20:30:54 | 显示全部楼层
b--<0就是,先判断b是否小于0,然后b自减1
首先,进入do循环体,b-=a,b=b-a=10-1=9,然后a++,a=1+1=2
然后判断b是否小于0,b不小于0,确定不再循环,b再--变成8
最终输出a=2,b=8
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-2 21:27:18 | 显示全部楼层
b不小于零就跳出循环,执行时,先是b-=a,此时b = 9 , a =2, 然后判断 b - - < 0吗,小于就循环,不小于就跳出循环,b - - <0这个语句,先用9判断是否小于零,结果不小于,然后执行b= b - 1;b就变成了8,这时才跳出循环,执行输出语句,其实b - - < 0.这个语句执行了两个命令,先用原本的b和零作比较,然后再减一,如果改成 - - b < 0,就是先执行b = b - 1, 再执行判断大于零还是小于零,这个时候输出的b就是9了,至于a为什么等于2,好像看了上面的解释,已经明白了 吧:$
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-2 22:58:49 | 显示全部楼层
  1. #include<stdio.h>

  2. int main()

  3. {
  4.        
  5.         int a=1,b=10;
  6.        
  7.         do
  8.         {
  9.                 b-=a;
  10.                 a++;
  11.         }
  12.         while(b--<0);                //根据运算符优先级的问题  关系运算符大于后置自减运算符  所以先判断b的值是否小于0  然后在执行b-1
  13.                                                 //在while 语句里面没有执行任何语句 所以这个循环的作用主要就是把b的值一直减到<0 为止

  14.     printf("a=%d,b=%d\n",a,b);
  15.        
  16.         return 0;
  17.        
  18. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-7 14:46:23 | 显示全部楼层
哈哈,终于找到一个自己会解决的题了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-29 04:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表