sum+=n++*n;与sum+=n*n++; 为什么一个70一个55
来源:2-8 编程练习
浅笛
2018-06-21 17:17:41
2-8编程练习:
前置代码都是
public static void main(String[] args) {
int n=1; //定义整型变量n作为循环变量,并初始化
int sum=0; //定义整型变量sum存放和,并初始化
while(n<6) { //使用while循环求1到5的平方和
接下来用sum+=n++*n; 则输出为70,即错误答案
用sum+=n*n++; 则输出为55,即正确答案
希望有大侠为我解惑
3回答
llyxz93
2018-06-23
sum+=n++*n 实际计算为:
sum=(1*2)+(2*3)+(3*4)+(4*5)+(5*6)
sum+=n*n++ 实际计算为:
sum=(1*1)+(2*2)+(3*3)+(4*4)+(5*5)
upleave
2018-06-21
sum += n++*n; 这句代码里面,按照打印结果来看,应该是先计算了一次n++,在与原来的n相乘,之后才累加到sum。
可以这么理解:将这句代码中的n++看成一个整体,就好像定义了一个变量 x 当做是 n++ ,但是这时候n并没有+1,之后再将 x 与 n 相乘(这个时候,n还是原来的值,并没有加1),再将 x * n 的记过累加到sum。
拆分开来大概是这样:
int x = n+1; sum += x * n; n += 1;
慕慕6012600
2018-06-21
sum+=n*n++;这个表达式等价于下面的代码:
int x = n++; sum = sum + n * x; n=n+1;
先计算n++这个表达式的值,即x=n,然后sum+=n*x;
相似问题