若有 a=3,则执行下列语句为a的值为? a+=a*=a

若有 a=3,则执行下列语句为a的值为? a+=a*=a

a*=a后a的值不是变成9了吗为什么结果是12

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

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

6回答
Jeffery26 2018-08-07 00:14:42
裴淮恩 2018-08-02 17:13:55
Gp新的一天 2018-07-26 13:14:37

编译器的问题,在C#中也是12,编译器考虑个预存值的问题,在C++就没有预存值即答案是18,在ECLIPSE和C#中就会先预存一个a的值为3,a+=a*=a就相当于运算a=a+(a*a),里面a的值均为3。

激空明 2018-07-20 21:13:45

因为在做计算的时候计算机预存了第一个a的值是3。完整的计算是先算a=a*a=3*3=9,然后再算a=a(此处的a为预存值)+a=3+9=12

mistshrouding 2018-07-18 06:05:00

c++中输出答案是18,两种语言对于运算的顺序处理是不同的。

java中先记录了每个a的初值,不是在运行中一个一个记录的

irista23 2018-07-12 10:12:30

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

a+=……在计算之前这个位置的a就被预存为3了,不会更新为9,最后的运算是3+9。


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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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