c语言问题:若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值为-12。请问怎么算的?

inta=3;a+=a-=a*a=-12... int a=3;
a+=a-=a*a=-12
展开
 我来答
bhtzu
2014-08-27 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4159万
展开全部
运算顺序是从右到左。
a-=a*a; //这时 a=3-9=-6
a+=-6;// a=-6 + -6 =-12
其实这里涉及一个寄存器复用问题,在连续等号操作中,a占用的寄存器在中途被更改了,因此才有-6+-6 ,而不是3+-6
llvwang998
2014-08-27 · 超过17用户采纳过TA的回答
知道答主
回答量:104
采纳率:0%
帮助的人:40.6万
展开全部
从右往左运算a*a=3×3=9此时a=3,a-运算a=a-9即a=3-9=-6此时a=-6,再进行a+运算a=a+(-6)即a=-6-6=-12
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
murphyXucv
2014-08-27 · TA获得超过211个赞
知道小有建树答主
回答量:458
采纳率:0%
帮助的人:84.6万
展开全部
从右到左 a-=a*a 就是a=a-a*a 算出a=-6 a+=a 就是a=a+a 就是-6+(-6)=-12
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幻想的渴望
2014-08-27 · TA获得超过259个赞
知道答主
回答量:85
采纳率:0%
帮助的人:54.1万
展开全部
自右向左运算
那么可以拆分为:
首先a*a=9;
a-=a*a,实际就是a=3-9=-6;
a+=a,实际就是a=-6+(-6)=-12
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我耐秋妞妹5445
2014-08-27 · TA获得超过341个赞
知道答主
回答量:124
采纳率:0%
帮助的人:135万
展开全部
先算:a-=a*a,其等价于
a=a-a*a
=3-3*3
=-6

再算a+=-6,其等价于
a=a+(-6)
=(-6)+(-6)
=-12
这样可以么?
追问
请问这种类型的算法该怎样算,不是从左至右吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式