C++语言 a=1 c=(a+=3)+(a*=2) 为什么C=16?

inta=1;intc=(a+=3)+(a*=2);程序算出来结果是16,求解。。。我的思路是这样的先算a+=3结果为4再算a*=2这时a=4表达式的结果为84+8=12... int a = 1;
int c = (a+=3) + (a*=2);
程序算出来结果是16,求解。。。
我的思路是这样的 先算 a+=3 结果为4 再算a*=2 这时a = 4 表达式的结果为 8
4 + 8 =12 可结果为什么是16呢
展开
 我来答
terranlong
2011-09-09 · TA获得超过7294个赞
知道大有可为答主
回答量:2660
采纳率:0%
帮助的人:3971万
展开全部
应该尽量避免这样的情况出现
c=(a+=3)+(a*=2),首先先算第一个括号里面的,返回的是a的值,即a += 3,a = 1 + 3 = 4;
再算第二个括号里面的,返回的是a的值,即a *= 2,a = 4 * 2 = 8;
因此,a的值为8
c = a + a = 8 + 8 = 16

这句可以理解为:
a += 3;
a *= 2;
c = a + a;
从迭代器来看就知道怎么回事了
小飞花儿的忧伤
2011-09-09 · TA获得超过1661个赞
知道小有建树答主
回答量:1152
采纳率:100%
帮助的人:320万
展开全部
a+=3返回的并不是a+3的值,而是a的值,
a最后算出来是8没错,
所以c = a+a=16
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hgwkkej
2011-09-09 · 贡献了超过102个回答
知道答主
回答量:102
采纳率:100%
帮助的人:43.9万
展开全部
a*=16+3-5
a*=14
a=28

++b是先自增后运算
b++是先运算后自增
不小心就看花了
追问
我刚看完 你这答案的题目 在此 本人郑重的送你两个字:S    B

参考资料: 百度一下

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
My空心果
2011-09-09 · TA获得超过1290个赞
知道小有建树答主
回答量:753
采纳率:0%
帮助的人:619万
展开全部
将这个式子重写一下,你就清楚了:
int c = (a+=3) + (a*=2);即等价于如下:
int c = (a=a+3) + (a=a*2);//a的值为8
c=a+a=8+8=16
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
叔叔山里人
2011-09-09 · TA获得超过3260个赞
知道小有建树答主
回答量:2650
采纳率:0%
帮助的人:528万
展开全部
我算出来也是12...关注中

可能是这种情况,实际表达式c=a+a,你懂的,a最后为8
所以c=8+8=16
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式