黑马程序员技术交流社区
标题:
求救,一个简单的小问题。
[打印本页]
作者:
㎜___________点
时间:
2012-4-22 15:54
标题:
求救,一个简单的小问题。
int sum=0;
for(int x=0;x<100;x++)
{
sum+=x;
}
请问代码最后的 sum+=x;
应该怎么理解????
作者:
乞文超
时间:
2012-4-22 16:00
sum+=x相当于是sum=sum+x,for(x=0;x<100;x++)就是从一加到100的过程
作者:
乞文超
时间:
2012-4-22 16:03
sum+=x相当于sum=sum+x;这是JAVA、c 语言、c++的基本语法,楼主有必要去补一补基础,对你非常有用
作者:
Friends★
时间:
2012-4-22 16:26
就相当于是sum=sum+x。
作者:
王怡然
时间:
2012-4-22 16:32
sum+=x就是公式sum = sum + x;的简化写法;
作者:
真真姐
时间:
2012-4-22 17:18
本帖最后由 杨国祯 于 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的和!
【本帖纯手工制作,版主给技术分了!】
作者:
任文杰
时间:
2012-4-22 18:24
sum+=x 等价于 sum = sum + x; 即对sum进行累加,从0加到99,最后sum即为0到99所有整数的和。
作者:
任文杰
时间:
2012-4-22 18:26
纠正下,是0到100所有整数的和。抱歉!!!
作者:
黑马等我!
时间:
2012-4-22 19:11
建议楼主补习下算法的基础,我想上面的同学都讲的很清楚了。
作者:
马东华
时间:
2012-4-22 19:52
sum+=x 其实就是,sum=sum+x
作者:
张成龙
时间:
2012-4-22 22:21
就是sum=sum+x的简化写法;但和sum+=x稍有不同,前者进行了两次运算,后者进行一次运算,
通过下面一个简单例子就可以看出:
short s=1;
s+=3;
s=s+3;这句话编译会失败,因为3是int型,而s为short型
作者:
魏征
时间:
2012-4-22 22:31
其实就是0到99的累加,sum=sum+x;在for循环中遍历了100次。每一次x都自增+1,遍历第一次下x=0,sum=0+0;遍历第二次sum=0+1;遍历每一次相当于累加了一次。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2