无语
TC运算此类是自右向左.. ----------------解决方案--------------------------------------------------------
这种程序的风格很不好,建议楼主不要这么写了
----------------解决方案--------------------------------------------------------
21#:这和运算方向无关。因为所有的运算,无论什么方向,都必须在下个顺序点之前结束。具体可以看我引用的网址。还有不止TC,标准规定了赋值操作符的结合方向(而不是运算方向)是自右向左的。况且,TC出现的时候,还没有标准。不遵守标准的规定是正常的。这也是不推荐使用TC的原因之一。
22#:这不是风格的问题。这是彻头彻尾的错误!
----------------解决方案--------------------------------------------------------
汗
23#好像很激动。勿燥!~~~ ----------------解决方案--------------------------------------------------------
首先我们看下这个表达式:
a*b+c*d+e*f
这个表达式是怎么运算的呢?
你可能认为是先乘后加,答案是错的
他可以的顺序为:
一、
1: a*b
2: c*d
3: (a*b)+(c*d)
4: e*f
5: (a*b)+(c*d)+(e*f)
二、
1: c*d
2: e*f
3: a*b
4: (a*b)+(c*d)
5: (a*b)+(c*d)+(e*f)
WHY?
原因是加法运算的结合性要求两个加法运算按照先左后右的顺序执行
但对表达式的剩余部分执行顺序并未加规定,尤其是这里并没有要求
所有的乘法首先计算,也没有规则规定这几个乘法运算谁先执行。
希望这个能给楼主以启发。
----------------解决方案--------------------------------------------------------
恩?稀奇~~~~~~~~~~~从未听说过~~~~~~~~~~~~
----------------解决方案--------------------------------------------------------
这是美国Kenneth A.Peek著的C和指针里面介绍的
感兴趣的可以去读下,肯定收获颇丰.
----------------解决方案--------------------------------------------------------
恩恩……很好……喜马拉雅的发言印证了我的观点……
----------------解决方案--------------------------------------------------------
我认为答案是9啊,y=i+++i++;前面I++的答案是4再加上I++后面的I是一个5
----------------解决方案--------------------------------------------------------
记得以前讨论过,谭浩强的那本书上不是也叫你不要这么写的吗?
这根编译器有关。
以后看书看仔细点吧。
呵呵
----------------解决方案--------------------------------------------------------