运算符2-3选择题

运算符2-3选择题

a=3,  a+=a*=a  结果为什么是12

为什么不是1.a=a*a   a->9

                 2.a=a+a  a->18

正在回答

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

4回答

赋值运算从右向左执行,故a=a*a=9,a+=9,a=a+9=3+9=12

  • 慕用719437 提问者 #1
    执行完a=a*a a不是已经变成9了吗?
    2017-12-14 09:30:23
  • irista23 回复 提问者 慕用719437 #2
    a+=……在计算之前这个位置的a就被预存为3了,不会更新为9,最后的运算是3+9。
    2017-12-14 10:07:05
  • 慕用719437 提问者 回复 irista23 #3
    噢....好的、谢谢~
    2017-12-14 11:13:48
慕侠6497736 2018-04-15 17:29:37

这个是赋值运算符,得从右边往左边赋值运算。a*=3就是a=a*a=9,再算a+=9就是a=9+9=18.

  • 额。。。错了,a+=9应该是a=a+9=3+9=12
    2018-04-15 17:32:16
慕函数7422320 2018-04-13 19:41:10

从右往左计算:a*=a 等于 a=a*a 则a=3x3=9;

然后a+=a等于a=a+a;由于语句没有执行完;a=3+9=12

你也可以直接理解为a+=a*=a等于a=a+(a*a) 等于a=3+(3x3)=12.

小机灵鬼 2018-04-08 00:57:09
其实我感觉是这样,如果学过C++的构造函数以及运算符重载就知道,函数在return的时候回有一个临时五名对象,在运算结束的时候才会进行复制操作。所以JAVA这里也是在运算中途把a*=a这里的9给了一个临时无名对象,所以a还是3,在+=执行后才将这个无名变量的值给a。


问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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