在C语言中 int a,b; a=0; b=++a+a+++a+++a++; prinrf a,b; 通过上机得知,b=7 求告知,为什么b会等于7? 5

首先a自加,为1.++a与a++相加得22与第三个a++相加,得44于第四个a++相加,得8以上是我自己的解答过程,与电脑计算不符合。其中错误,望各位老师指正。... 首先a自加,为1.
++a 与 a++ 相加 得 2
2 与 第三个a++相加,得 4
4 于 第四个a++相加,得 8
以上是我自己的解答过程,与电脑计算不符合。其中错误,望各位老师指正。
展开
 我来答
汐3600
2014-10-29 · 超过16用户采纳过TA的回答
知道答主
回答量:68
采纳率:0%
帮助的人:29.7万
展开全部
上式可改为:(++a)+(a++)+(a++)+(a++),一共四个a
第一个++a是a先自增一然后再做加法此时a=1,式子变成1+(a++)+(a++)+(a++),而a++表示先做加法再自增1;第二个a时,a=1先做加法,式子变成1+1+(a++)+(a++),然后a自增1此时a=2;第三个a时,同第二个a,式子变成1+1+2+(a++),此时a自增1变成3;第四个a时式子变成1+1+2+(3++)=4+(3++)=4+3=7,而a自增1变成4,。最后a=4,b=7。
此类题的关键解法是a++表示a先运算,然后再自增1;++a表示先自增1,再参与运算。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阿冬76
2014-10-29 · TA获得超过5028个赞
知道大有可为答主
回答量:2710
采纳率:88%
帮助的人:1064万
展开全部
这种问题在不同的编译器中可能会得到不同的答案,不建议你仔细扣这种特殊的语法,编程的时候也没有人会这么写。真正的高手写出的程序是优雅且易懂的,而不是有可能产生歧义的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
s582415596
2014-10-29 · 超过12用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:32.4万
展开全部
第三个a++的值是3呀,
++a是a的值先自增,再参与运算
a++是a的值先参与运算,再自增
b=(1)1+1(2)+2(3)+3(4)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-10-29
展开全部
从左往右看b=(++0)+(1++)+(2++)+(3++)=1+1+2+3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式