C语言里“自加自减”问题

这几个题怎么做啊,我都快崩溃了,求解释!!!a=3,b=(a++)+(a++)答案:b=6a=5a=3,b=(++a)+(a++)答案:b=8a=5a=3,b=(a++)... 这几个题怎么做啊,我都快崩溃了,求解释!!!
a=3,b=(a++)+(a++) 答案:b=6 a=5
a=3,b=(++a)+(a++) 答案:b=8 a=5
a=3,b=(a++)+(++a) 答案:b=8 a=5
a=3,b=(++a)+(++a) 答案:b=10 a=5
展开
 我来答
七七七的0E6
2010-08-01 · TA获得超过652个赞
知道答主
回答量:253
采纳率:0%
帮助的人:284万
展开全部
第一个,因为a是在执行完语句之后才进行的自加、所以在完成这句
b=(a++)+(a++)之前,a一直是3,所以b的结果是3+3=6,执行完之后因为a进行了两次自加,所以a=5。
第二个。因为有++a,所以是前加,在执行这句语句之前就已经加了,所以a=4,所以b=4+4=8,后面还有a++,所以后面变成a=5。
第三个,同上第二个。
第四个。因为++a执行了两次,a=5,所以b=5+5=10,a依然是5

总结:
1,无论怎么变,无论a是前加还是后加,运行之后a必然加了两次,所以四个结果a都是5
2,b的结果主要看a是前加还是后加。
前加了,就要先算a,再算b,例如第二个。
后加的。就不用考虑a会影响b的值。例如第一个。
xueshen_K
2010-08-01
知道答主
回答量:32
采纳率:0%
帮助的人:24万
展开全部
a++是先加1再使用,++a是先加1再使用。
对于第一行,两个加数都是a++,所以都是先使用(先作加法运算)再加1,所以b=6,a=5。你可以理解为,先用a=3作加法运算,又两次加1。
对于第二行,一个加数是++a,一个加数是a++,所以,先加1再使用(即加法运算),再加1。
第三四行同理,弄清楚三个过程的顺序:加1,运算,加1。
希望你能理解…
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4486624
2010-08-01
知道答主
回答量:14
采纳率:0%
帮助的人:8.9万
展开全部
把握两个原则:

a++ 先用再加
++a 先加再用

以第一个为例:

a=3, b=3+3. a = 3 + 1 , 再 +1 = 5

以此类推。

希望能帮到你

ps: 其实不用太在意这种东西。实际开发中谁也不会这么写,真写出这种代码的话离被开除也不远了 :)

不过如果是你的老师十分偏爱这种题目的话,我也没办法,只好帮你一起诅咒TA。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
200701962
2010-08-02 · 超过23用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:88.6万
展开全部
这么和你说吧,b = (a++)+(a++),你可以看成b = a + a,a = a + 1 + 1
b = (++a)+(a++),你可以看成a = a + 1 = 4,b = a + a = 4 + 4(这时候,a已经是4了,所以答案是8),a = a + 1 = 5
第三行同上
a = a + 1 = 4,a = a + 1 = 5,b = a + a = 10
能够明白么??不明白加我百度HI,我再给你细说。
如果满意请采纳,谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leezhm
2010-08-01 · TA获得超过107个赞
知道小有建树答主
回答量:256
采纳率:0%
帮助的人:223万
展开全部
规则
1、 运算式是从右到左计算
2、注意运行的优先级
3、b = a++是先将a赋值给b,然后再对a进行自加
4、b = ++a是先对a进行自加,然后在把自加了之后的a赋值给b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式