sum+=n++*n;与sum+=n*n++; 为什么一个70一个55

sum+=n++*n;与sum+=n*n++; 为什么一个70一个55

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,即正确答案

希望有大侠为我解惑


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
llyxz93 2018-06-23 19:27:10

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)

  • llyxz93 #1
    int n = 1; System.out.println(n++); // 显示为1 System.out.println(n); // 显示为2
    2018-06-23 19:31:39
慕慕6012600 2018-06-21 18:22:30

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

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

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

upleave 2018-06-21 17:49:09

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;


  • upleave #1
    或许在java中,只有在整一条表达式都计算完了,才会将 n++的结果赋值给n
    2018-06-21 17:52:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师