C++中或运算符(||)执行的逻辑及顺序

背景

使用C++刷题的时候,对于给出的答案代码有些疑惑

明明已经用或运算判断过左右子树是否为空

if( z->left == NULL || z->right == NULL )

为什么还要在下一行代码中,单独判断右子树是否为空

if ( z->right != NULL )

疑惑点

对于这个代码案例实在不理解

感觉第二次判断是不是有些重复了

或运算的执行逻辑

if ( A || B )
	return ;
else
	return ;

或运算可以得知,如果A和B有一方为True,就执行if语句

如果A和B同时为false,才执行else语句

所以在我的潜意识里,进行或运算需要把A和B都判断完成后,才执行if语句

或运算的顺序

但是实际上不是这样的

实际上if判断条件里先判断A是否为True

如果A为True ⇒直接进入if语句

如果A为False ⇒ 再接着判断B ⇒ 如果B为True ⇒ 进入if语句

如果A为False ⇒ 再接着判断B ⇒ 如果B为False⇒ 进入else语句

换句话说

或运算里的顺序也可能影响着代码鲁棒性

总结

当使用或运算符时

或运算符左边为True,则不进行右边的判断。只要有一个为True,则整体为True

以此类推,多个或运算符依然适用

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值