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)

1
hlyxz93
h int n = 1; System.out.println(n++); // 显示为1 System.out.println(n); // 显示为2
h018-06-23
共1条回复

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;


1
hpleave
h 或许在java中,只有在整一条表达式都计算完了,才会将 n++的结果赋值给n
h018-06-21
共1条回复

慕慕6012600

2018-06-21

sum+=n*n++;这个表达式等价于下面的代码:

int x = n++;
sum = sum + n * x;
n=n+1;

先计算n++这个表达式的值,即x=n,然后sum+=n*x;

0

0 学习 · 14452 问题

查看课程

相似问题

回答 6

回答 2

回答 1

回答 2