|
|

楼主 |
发表于 2006-1-12 13:17:05
|
显示全部楼层
仔细又看了一遍C99里有关prefix increment的描述,可惜没有找到c89的文档
The value of the operand of the prefix ++ operator is incremented. The result is the new
value of the operand after incrementation. The expression ++E is equivalent to (E+=1).
像(++i) + (++i)这样的演算不是undefined behavior!而是完全限定的
先做两次自增运算,然后取i的值相加,算
i=2;
r = (++i) + (++i);
我认为r就应该是8
--------------------------------------------
我想我得说明一下,我在写一个类似于C模拟器的程序,标准里undefined的东西当然
怎么来都行,但是如果不幸的被明确define了,那就麻烦了。例如常见的&&运算,左
运算对象为0时不引用右对象值,最常见的陷阱就是诸如func1()&&func2()的写法,
虽然我自己写程序连while(i--)这样的含义明确的写法都不用,可是为了测试,每天
都在琢磨各种可能的不良写法,痛苦啊。 |
|