c++中 a = 1; c = ( a++ ) + ( a++ ) 执行后为什么c的值为2 ,a等于3了??

为什么在c#中得到的结果不同的??... 为什么在c#中得到的结果不同的?? 展开
 我来答
583735151
2011-03-21 · TA获得超过449个赞
知道小有建树答主
回答量:198
采纳率:0%
帮助的人:228万
展开全部
后缀自增橘举对表达式的影响是,将变量的原值返回给表达式在自增,此处相当于保存a原值的副本(a=1),在两个a相加赋值渗伍袜给c,c就等于丛激2了,至于a变成了3,是因为他连续自增了2次
追问
为什么在c#中得到的结果不同的??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
8868996
2011-03-21 · TA获得超过108个赞
知道答主
回答量:52
采纳率:0%
帮助的人:29万
展开全部
应该a++表示的是运算了之后,再自加纯含1
所以伏坦在给C赋值的时缺裤桐候,a的值还是1;而a运算之后自加了两次,所以为3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wujiale90
2011-03-21
知道答主
回答量:17
采纳率:0%
帮助的人:16.3万
展开全部
a++和++a是不模首伏同的,a++就是此芹岩时运算是调用的是a的原值,旦携但是a实际的值已经做了两次加1运算,在不同的语言中,运算方法是不同的,所以出现值不一样很正常。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
_________刹那
2011-03-21 · 超过10用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:28.8万
展开全部
a++:先运算罩枯,在算a = a+1
题中:c = ( a++ ) + ( a++ ) 相当于: c= a+a 此时念樱a = 1 ,即 c= 1+1=2;
第一次a++(此时a =1) :a = a+1 = 1+1=2;
第二次a++(此时a= 上面第一次得到的a = 2:a=a+1=2+1 = 3
所以 c = 2; a = 3
若是++a 刚好反过来,先自加1,再进行运算!

希望能帮到物高洞你!!!
追问
明白了 , 只是不知道为什么在不同的编译器结果也不同........................
追答
是,有的编译器是会不一样,vc6.vs.2010都是这样的,遵从主流嘛。。老的一些编译器是会有不一样的结果。。。至于为什么嘛,编译器设计不一样吧,我也懒得去弄,反正用最新的就好了嘛!!
如果满意,请采纳回答!谢谢!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
树树好
2011-03-21
知道答主
回答量:51
采纳率:0%
帮助的人:18.6万
展开全部
这种代码简直就是为键租祥了考稿搏试出的嘛 可读性太差型烂了~前面几个人回答得很好了,我就不重复了~我是非常讨厌这种代码!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式