编程论坛
注册
登录
编程论坛
→
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_bug
2009-07-26 09:45
y仍然是2,z仍然是3
因为&&和||运算是选择性运算,如果前面条件满足,则不会运行后面的
!x已经为0,整个表达式不管后面是什么,结果都是0,所以不会执行后面的(y=z)
下面的z也是一个道理
#3
pangding
2009-07-26 13:40
回复 楼主 cj0608
嗯,2楼解释的很正确。
这种短路求值的语法很有用,有时可以用来写一些比较简洁的代码。
比如你说的那个:
!x && (y = z);
其实就相当于:
if(!x)
y = z;
不过有时也要小心,某种你希望的动作可能会没有执行。
#4
cj0608
2009-07-26 17:26
谢谢指导。。现在明白啦。。
1