[求助]
有如下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
----------------解决方案--------------------------------------------------------
谢谢拉
----------------解决方案--------------------------------------------------------