关于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; 哪位大侠解释一下造成这三个结果有差异的原因呢?那这个答案到底是多少? 展开
展开
1个回答
展开全部
情况一无需解释,你写的过程与计算机处理过程相同。
情况二:
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;
情况二:
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;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询