背景

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

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

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

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

if ( z->right != NULL )

疑惑点

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

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

或运算的执行逻辑

if ( A || B )return ;
elsereturn ;

或运算可以得知,如果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

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

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

  1. sql server运算符_SQL Server执行计划中SELECT运算符的主要概念

    sql server运算符 One of the main responsibilities of a database administrator is query tuning and troub ...

  2. 8. Java 中的运算符 【连载 8】

    在前面的内容已经学会了如何定义变量和初始化变量.定义变量的目的就是为了操作数据.Java 语言中给我们提供了专门用来操作这些数据的代码符号,统称为"运算符". 按照操作符的用法,我 ...

  3. java与与短路与_Java中短路运算符与逻辑运算符示例详解

    1.逻辑运算符(部分) 符号 名称 && 短路与运算符 || 短路或运算符 & 与运算符 | 或运算符 对于理工科学习者来说,逻辑运算是较为基础的概念,通常会在大一的离散数学课 ...

  4. JS中相等运算符 == 隐式转换

    原代码片段: var a = [] console.log(a == 0)//true console.log(!a == 0)//true复制代码 ​ a == 0 相当于执行了 Number(a. ...

  5. c语言中的运算符及其含义_按位运算符及其在C语言中与Example一起使用

    c语言中的运算符及其含义 1)&(按位与) (1) & (bitwise AND)) It does AND on every bit of two numbers. The resu ...

  6. python中基本运算符_Python中的基本运算符及示例

    python中基本运算符 Operators are symbols which tells the interpreter to do a specific operation such as ar ...

  7. c++语言运算符的优先次序,C++中的运算符和运算符优先级总结

    运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.C++ 内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 本文将逐一介绍算术运 ...

  8. js中短路运算符 ||

    见过好多插件都这么用,感觉高大上... || 与 && 说到底也没啥,稍微懂点程序的,或者是搞过相关硬件编程的都会用到这玩意,就算是数学,中学你可能都用到过. 是不是不信? & ...

  9. 如何在SQL Server 2016中比较查询执行计划

    SQL Server 2016 provides great enhancement capability features for troubleshooting purposes. Some of ...

最新文章

  1. 平台如何限制ip流量_ABTest 平台设计 - 如何进行流量分桶
  2. 安装 | Matlab2022a下载及新功能一览
  3. 数据源名称和 64 位操作系统
  4. 关于meta便签详解
  5. 带你一起学习实用计算机英语!(IT行业、四六级党记起来)《软件工程专业英语》第二单元的重点词汇+名词缩写+重难句+软件需求规格说明
  6. 指令重排序及Happens-before法则随笔
  7. 拜登政府撤销对Tik Tok和Wechat禁令 启动对外国应用审查
  8. Codeforces-Div312
  9. sqlserver存储过程加锁后怎么解锁_MySQL 的加锁处理,你都了解的一清二楚了吗?...
  10. Android中Parcelable接口的实现方法
  11. 两周,好多人的帮助解决select空列不显示的function
  12. Gilbert Strang的线性代数课程笔记-第一课
  13. TIM-VX编译体验
  14. 机器学习-DBSCAN聚类算法
  15. c#开发移动彩信网关
  16. 设置 Google Analytics(分析)全局网站统计代码
  17. unity3d 中添加视频
  18. GAMES-101-个人总结归纳-Rasterization
  19. Analysis of Struts2 : http://wenku.baidu.com/view/ad421874a417866fb84a8e75.html
  20. 【epoll函数】epoll_create、epoll_ctl、epoll_wait

热门文章

  1. 物联网之场景联动策略
  2. 建立人工智能助理应用程序的过程
  3. 防止activity转屏幕后调用oncreate的方法
  4. 部署nginx遇到的问题_重定向次数过多或者干脆找不到路径
  5. 关于写论文的资料总结
  6. linux禁用内存,Linux系统发明人抨击英特尔禁用ECC内存的政策
  7. 软钎焊和硬钎焊的区别
  8. 黄仁宇走了,柏杨也走了
  9. 环境监测中标准气体使用问题的探讨
  10. Python源码学习(二)