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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

㎜___________点

注册黑马

  • 黑马币:

  • 帖子:

  • 精华:

© ㎜___________点 注册黑马   /  2012-4-22 15:54  /  2227 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int sum=0;
                for(int x=0;x<100;x++)
                {
                        sum+=x;                
                }


请问代码最后的 sum+=x;

应该怎么理解????

12 个回复

正序浏览
其实就是0到99的累加,sum=sum+x;在for循环中遍历了100次。每一次x都自增+1,遍历第一次下x=0,sum=0+0;遍历第二次sum=0+1;遍历每一次相当于累加了一次。   
回复 使用道具 举报
就是sum=sum+x的简化写法;但和sum+=x稍有不同,前者进行了两次运算,后者进行一次运算,
通过下面一个简单例子就可以看出:
short s=1;
s+=3;
s=s+3;这句话编译会失败,因为3是int型,而s为short型
回复 使用道具 举报
sum+=x   其实就是,sum=sum+x
回复 使用道具 举报
建议楼主补习下算法的基础,我想上面的同学都讲的很清楚了。
回复 使用道具 举报
纠正下,是0到100所有整数的和。抱歉!!!
回复 使用道具 举报
sum+=x 等价于 sum = sum + x; 即对sum进行累加,从0加到99,最后sum即为0到99所有整数的和。
回复 使用道具 举报
本帖最后由 杨国祯 于 2012-4-22 18:08 编辑

不管以前童鞋们理解不理解,以下的分析会有帮助,

执行过程给你分析下吧!

首先给你讲解的是运算符的优先级和方向,这两个弄明白了这个问题自然解决了!

1、概括: 不同于 3 = 3+2
sum +=x 翻译过来就是  sum = sum + x;

那我们肯定会有疑问了,为什么会有两个sum,他们怎么能相等呢? 实际上这里不同于 3 = 1+2;或者不同于 3 = 3+2

=号在这里是运算符,而java是面向对象的,一切从对象的角度出发来看这个问题就非常的明白了

=这个运算符的与运算方向是从右往左,也就是把右边的结果赋给左边的对象,

2、概括:既然运算符有方向,也就是有先后,所以sum值是变化的
这样看来我们来,开始的时候sum是0,而后sum = sum +x;先算右边然后把右边赋给左边,也就是我们把0+x的值赋给了左边sum

然后sum的值就改变了,同一个sum但是因为运算符的先后顺序所以执行的右边,然后把右边的值给了sum,sum的值就改变了!

这种方法通常用于已知的连续的一串数组的求和,如1到1000的和!

【本帖纯手工制作,版主给技术分了!】

回复 使用道具 举报
sum+=x就是公式sum  = sum + x;的简化写法;
回复 使用道具 举报
就相当于是sum=sum+x。
回复 使用道具 举报
sum+=x相当于sum=sum+x;这是JAVA、c 语言、c++的基本语法,楼主有必要去补一补基础,对你非常有用
回复 使用道具 举报
sum+=x相当于是sum=sum+x,for(x=0;x<100;x++)就是从一加到100的过程
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马