注册 登录
编程论坛 C++教室

一个小问题。。逻辑的

cj0608 发布于 2009-07-26 09:24, 497 次点击
x=1,y=2,z=3
执行!x&&(y=z)后,y=?
执行y||(z=x)后,z=?
初学者希望大家帮忙。。。
3 回复
#2
ET_bug2009-07-26 09:45
y仍然是2,z仍然是3
因为&&和||运算是选择性运算,如果前面条件满足,则不会运行后面的
!x已经为0,整个表达式不管后面是什么,结果都是0,所以不会执行后面的(y=z)
下面的z也是一个道理
#3
pangding2009-07-26 13:40
回复 楼主 cj0608
嗯,2楼解释的很正确。
这种短路求值的语法很有用,有时可以用来写一些比较简洁的代码。
比如你说的那个:

!x && (y = z);

其实就相当于:

if(!x)
    y = z;

不过有时也要小心,某种你希望的动作可能会没有执行。
#4
cj06082009-07-26 17:26
谢谢指导。。现在明白啦。。
1