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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© taolove   /  2015-6-3 22:03  /  2812 人查看  /  35 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

while循环没有执行i++操作,所以一直在加,死循环……在while的循环体内加入i++,结果就一样了
回复 使用道具 举报
第一个 i 恒等于1
回复 使用道具 举报
学习学习!
回复 使用道具 举报
while(i++ <= 5)  { sum+=i; }  最后执行结果为21;
for(i=0;i<=5;i++) { sum +=i } 最后执行结果为15;

原因如下:
1.首先要搞清楚,在这个while循环中,i++是先赋值再运算。也就是说在while(i++ <=5)每一次都是先判断i<=5,再进行自加1。再最后一次的判断时是:
              while( i++ < = 5),此时i=5,但是是先赋值再运算,就是说把当前的5赋值给判断式。执行顺序为5 <=5为真,i再i++,自加1,此时已经进入循环体了,而i此时的值为6.
              在循环体里面又执行了一次 sum += i;(15+=6) ,最后sum=21;
所以进行6次"sum += i", 则为sum与6次i相加,0+1+2+3+4+5+6 = 21;

2.而for循环是先判断,再运算,最后自加。在这个程序里就是先判断"i <= 5",再运算"sum +=i",运算完最后i再自加1.最终循环了5次,也就是sum与5次i相加, 0+1+2+3+4+5 = 15;
回复 使用道具 举报
好多大神!
回复 使用道具 举报
学习学习!
回复 使用道具 举报
虽然不懂,但还是要顶一下
回复 使用道具 举报
你改成while(i<=5)
{
        i++;
       sum+=i;
}
或者把你的while(i++<=5)改成while(++i<=5)试试,因为I++如果不参于表达式的话是直接+1,如果参于表达式的话是先会不自增+1,等表达式完成之后才自身+1,我没有测试,你可以试试.
回复 使用道具 举报
第一个是一个死循环吧
回复 使用道具 举报
1 你有更新i吗?
回复 使用道具 举报
就看看
回复 使用道具 举报
回复 使用道具 举报
Dast 中级黑马 2015-6-14 13:17:14
33#
论断点调试的重要性!
回复 使用道具 举报
第一个是个死循环。如果在while中加入i++ 两个程序结果相同
回复 使用道具 举报
goldboy 来自手机 中级黑马 2015-6-14 14:45:41
35#
第一个sum=sum+i,其中i已经变成2了,不是1,你在while(i++<5)运行后,i的值是不是加1啦
回复 使用道具 举报
while循环的一般形式是  while(表达式)语句  ,那个表达式是用来判断的,while(i++<=5)这不是把判断条件改了,结果肯定不行。
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马