当前位置: 代码迷 >> C语言 >> [求助]
  详细解决方案

[求助]

热度:110   发布时间:2005-03-17 17:56:00.0
[求助]
有如下
          X=1
          J=(++X)+(++X)+(++X)
     执行完后J的直是多少?为什么不是9即2+3+4=9呢?

还有A+++B等价(A++)+B还是等价A+(++B)为什么?

           请详细讲解再此谢过
----------------解决方案--------------------------------------------------------
理论上来说结果应该是J=4+3+2=9
但是编译器先计算出X的最后值为4,再相加,也就是4+4+4了,所以结果为12

[此贴子已经被作者于2005-3-17 18:08:00编辑过]



----------------解决方案--------------------------------------------------------
为什么没人理我!!!
----------------解决方案--------------------------------------------------------
还有那一问等价那一个呀?????
----------------解决方案--------------------------------------------------------
关于第一问
b=(++i)+(++i)+(++i);
他是一个这样计算过程
先计算两个(++i)  这样i=3
表达式变成b=3+3+(++i)     // i=3
=>b=6+4;     // i = 4
=>b= 10;

现在要去上课了    88
----------------解决方案--------------------------------------------------------
回复:还有A+++B等价(A++)+B还是等价A+(++B)为什么?

C编译系统在处理时尽可能多地(自左而右)将若干个字符组成一个运算符(在处理标志符、关键字时也按同一原则处理),所以A+++B等价(A++)+B而不是A+(++B)



----------------解决方案--------------------------------------------------------
呵呵不过我试了一下,在TCPP里时这样的

但在TurboC里是相反的,就是等价于A+(++B)了

所以要看你的编译系统了
----------------解决方案--------------------------------------------------------
除非是考试中一般是不可能看到这样的写法的
----------------解决方案--------------------------------------------------------
  X=1
          J=(++X)+(++X)+(++X)


我想可能是这样的
由于++优先级高于+
所以先进行3次++X
这样X=1就变成X=4这样J=4+4+4=12

----------------解决方案--------------------------------------------------------
谢谢拉
----------------解决方案--------------------------------------------------------
  相关解决方案