Quote:
引用第7楼剑云于2006-10-25 18:25发表的:
我说一下.上面几位的有点偏差哈
这里输出的1不是x加了1,而是++x||++y||++z这个表达式的值,表达是的值是真的,所以为1,实际上x,y,z都是加了的,不信可以单独输出x,y,z的值,肯定都是1
C++是短路求值,++X经过BOOL将计算为真,后面的就不用计算了
C++首先运算用“&&”和“||”连接的表达式左边的表达式,当有信息能够判定整个表达式的最终值时,就不会去计算余下的表达式。 --short-circuit evaluation
另外++X为true的原因是因为编译器将所有非0按真处理,0按假处理