C++中或运算符(||)执行的逻辑及顺序
背景
使用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++中或运算符(||)执行的逻辑及顺序相关推荐
- sql server运算符_SQL Server执行计划中SELECT运算符的主要概念
sql server运算符 One of the main responsibilities of a database administrator is query tuning and troub ...
- 8. Java 中的运算符 【连载 8】
在前面的内容已经学会了如何定义变量和初始化变量.定义变量的目的就是为了操作数据.Java 语言中给我们提供了专门用来操作这些数据的代码符号,统称为"运算符". 按照操作符的用法,我 ...
- java与与短路与_Java中短路运算符与逻辑运算符示例详解
1.逻辑运算符(部分) 符号 名称 && 短路与运算符 || 短路或运算符 & 与运算符 | 或运算符 对于理工科学习者来说,逻辑运算是较为基础的概念,通常会在大一的离散数学课 ...
- JS中相等运算符 == 隐式转换
原代码片段: var a = [] console.log(a == 0)//true console.log(!a == 0)//true复制代码 a == 0 相当于执行了 Number(a. ...
- c语言中的运算符及其含义_按位运算符及其在C语言中与Example一起使用
c语言中的运算符及其含义 1)&(按位与) (1) & (bitwise AND)) It does AND on every bit of two numbers. The resu ...
- python中基本运算符_Python中的基本运算符及示例
python中基本运算符 Operators are symbols which tells the interpreter to do a specific operation such as ar ...
- c++语言运算符的优先次序,C++中的运算符和运算符优先级总结
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号.C++ 内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 杂项运算符 本文将逐一介绍算术运 ...
- js中短路运算符 ||
见过好多插件都这么用,感觉高大上... || 与 && 说到底也没啥,稍微懂点程序的,或者是搞过相关硬件编程的都会用到这玩意,就算是数学,中学你可能都用到过. 是不是不信? & ...
- 如何在SQL Server 2016中比较查询执行计划
SQL Server 2016 provides great enhancement capability features for troubleshooting purposes. Some of ...
最新文章
- 平台如何限制ip流量_ABTest 平台设计 - 如何进行流量分桶
- 安装 | Matlab2022a下载及新功能一览
- 数据源名称和 64 位操作系统
- 关于meta便签详解
- 带你一起学习实用计算机英语!(IT行业、四六级党记起来)《软件工程专业英语》第二单元的重点词汇+名词缩写+重难句+软件需求规格说明
- 指令重排序及Happens-before法则随笔
- 拜登政府撤销对Tik Tok和Wechat禁令 启动对外国应用审查
- Codeforces-Div312
- sqlserver存储过程加锁后怎么解锁_MySQL 的加锁处理,你都了解的一清二楚了吗?...
- Android中Parcelable接口的实现方法
- 两周,好多人的帮助解决select空列不显示的function
- Gilbert Strang的线性代数课程笔记-第一课
- TIM-VX编译体验
- 机器学习-DBSCAN聚类算法
- c#开发移动彩信网关
- 设置 Google Analytics(分析)全局网站统计代码
- unity3d 中添加视频
- GAMES-101-个人总结归纳-Rasterization
- Analysis of Struts2 : http://wenku.baidu.com/view/ad421874a417866fb84a8e75.html
- 【epoll函数】epoll_create、epoll_ctl、epoll_wait