a=a*a的时候a不是已经变成9了吗?为啥a=a+a不是9+9吖?

a=a*a的时候a不是已经变成9了吗?为啥a=a+a不是9+9吖?

a=a*a的时候a不是已经变成9了吗?为啥a=a+a不是9+9吖?

正在回答

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

4回答

这个应该设计到计算机底层的执行顺序的原因。


你可以这样理解:

a=3;

a = a + a = a * a;

这个表达式,要计算最终a的值,由于赋值运算符要从右往左,所以先计算右边的内容。

所以计算机开始计算a + a = a * a 部分,从左到右看a + a, 计算机先把第一个a的值也就是3放到一个盒子里(底层的寄存器),再拿+号右边的a的值来进行加法运算,这个时候,计算机发现+号右边的a的值是需要通过赋值运算符来计算得出的,因此它要计算第二个赋值号右边的内容来赋值给+号右边的a。用同样的流程计算出a*a(这两个a的值不需要通过别的计算来得到)等于9,于是把9赋值给+号右边的a。之后再进行加法运算,也就是3+9最后结果就等于12了。


其实你只要记住,计算机在计算这些表达式的时候,不是直接a*b或者b+c的,而是先把a变量的值复制出来放到某个地方,再复制变量b的值放到另一个地方,再进行计算,再把结果放到某个变量的。

希望能够帮助你!如果实在还是想不通,建议把这个问题先放到一边,学了后面的内容,或者去找找关于计算机组成原理方面的书看看,应该是可以懂的。

UPC丶CC魔神 2019-04-10 20:40:00

题目是a为3  a=a*a+a 是吧

你要知道赋值运算 = 优先级最低

a*a=9 这时a还没赋值还是3

结果为9+3

吃吃吃鱼的猫 2019-04-04 13:55:00

同学你好,第一步的结果是多少,到第二步的时候,a的值都会是初始值3。如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

吃吃吃鱼的猫 2019-04-04 10:30:40

同学你好,执行a=a+a的时候a还没有被赋值运算符“=”赋值为9,所以此时a=3+9=12。如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 乜嘢吖 #1
    a=a+a不是就是把a给赋值成9吗?这上面的=号
    2019-04-04 13:39:23
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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