若有 a=3, a+=a*=a; 为什么结果等于12,不等于18?

若有 a=3, a+=a*=a; 为什么结果等于12,不等于18?

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

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

65回答
慕姐2754572 2018-06-20 19:23:51

a先自乘a然后在加a

江湖骗子997 2018-06-14 16:50:13

这是不是和C语言有区别?

  • 是有区别的,C语言是18
    2018-06-14 17:16:55
宝慕林0294932 2018-06-10 16:47:36

看了评论,想了一下,应该是a+=a*=a;表达式进行了a0=a+a;a1=a+a0;a=a1,这样的处理

  • 浅笛 #1
    这是啥意思。。楼下正解
    2018-06-11 12:53:15
提问者 绕指凉8983 2018-06-08 23:33:40

经过验证确定,java在进行这样的运算时,用到了临时变量(假设为@a),即中间的计算结果并没有存储到变量a中。

运算过程是从右向左的:

先运行a* = a ;  即 @a = a * a , 结果为 9,

此结果并没有赋值给a,而是赋值给了临时变量@a

再运行a += a;  即 a = a + @a , 结果为 12


提问者 绕指凉8983 2018-06-08 23:32:05

经过验证确定,java在进行这样的运算时,用到了临时变量(假设为@a),即中间的计算结果并没有存储到变量a中。

运算过程是从右向左的:

先运行a* = a ;  即 @a = a * a , 结果为 9,此结果并没有赋值给a,而是赋值给了临时变量*a

再运行a += a;  即 a = a + @a , 结果为 12

首页上一页1234下一页尾页
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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