关于C语言的怪问题(++a)+(++a)+(++a) =?

情况一:a=5;b1=(++a);//b1=a=6b2=(++a);//b1=a=7b3=(++a);//b1=a=8b=b1+b2+b3;printf(“%d”,b)/... 情况一: a=5; b1=(++a);//b1 = a = 6 b2=(++a);//b1 = a = 7 b3=(++a);//b1 = a = 8 b = b1+b2+b3 ; printf(“%d”,b)// b =21 情况二: a=5; b = (++a)+(++a)+(++a);// a=8 在vs2005中运行结果为 b = 22 在vs2010和TC2.0中运行显示结果为 b=... 情况一: a=5; b1=(++a);//b1 = a = 6 b2=(++a);//b1 = a = 7 b3=(++a);//b1 = a = 8 b = b1+b2+b3 ; printf(“%d”,b)// b =21 情况二: a=5; b = (++a)+(++a)+(++a);// a=8 在vs2005中运行结果为 b = 22 在vs2010和TC2.0中运行显示结果为 b= 24; 哪位大侠解释一下造成这三个结果有差异的原因呢?那这个答案到底是多少? 展开 展开
 我来答
岑智靖怀慕
2019-09-14 · TA获得超过3690个赞
知道大有可为答主
回答量:3102
采纳率:35%
帮助的人:451万
展开全部
情况一无需解释,你写的过程与计算机处理过程相同。
情况二:
b
=
(++a)+(++a)+(++a);//
a=8
在vs2005、linux运行结果为
b
=
22
运算过程:
先算括号中的,同级的遵从右到左,同时遵从四则运算规则
第一个(++a);//a=6
第二个(++a);//a=7

此时,a=7
这时运算a+a=14
结果保存到另一个临时变量
这时再运算第三个(++a);//a=8
这时再运算b=a+14=8+14=22
在vs2010和TC2.0中先运算完括号中的运算,再进行+运算,先算出a的最终值8,再运算
b=a+a+a=
24;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式