C++ Primer:4.3 逻辑和关系运算符

其他章节:C++ Primer

关系运算符作用于算术类型或指针类型,逻辑运算符作用于任意能转换成bool值的类型。
逻辑运算符和关系运算符的返回值都是bool类型。
值为0的运算对象(算术类型或指针类型)表示假,否则表示真。
逻辑与关系运算符的运算对象和求值结果都是右值。

结合律 运算符 功能 用法
! 逻辑非 !expr
< 小于 expr < expr
<= 小于等于 expr <= expr
> 大于 expr > expr
>= 大于等于 expr >= expr
== 相等 expr == expr
!= 不相等 expr != expr
&& 逻辑与 expr && expr
|| 逻辑或 expr || expr

逻辑与和逻辑或运算符

  • 对于逻辑与运算符(&&)来说,当且仅当两个运算对象都为真时结果为真
  • 对于逻辑或运算符(||)来说,只要两个运算对象中的一个为真结果就为真。

短路求值:逻辑与运算符和逻辑或运算符都是先求左侧运算对象的值再求右侧运算对象的值,当且仅当左侧运算对象无法确定表达式的结果时才会计算右侧运算对象的值。

  • 对于逻辑与运算符来说,当且仅当左侧运算对象为真时才对右侧运算对象求值。
  • 对于逻辑或运算符来说,当且仅当左侧运算对象为假时才对右侧运算对象求值。

逻辑非运算符

逻辑非运算符(!)将运算对象的值取反后返回。

关系运算符

关系运算符比较运算对象的大小关系并返回布尔值。关系运算符都满足左结合律。
因为关系运算符的求值结果是布尔值,所以将几个关系运算符连写在一起会产生意想不到的结果。

  • 应将i < j < k写作i < j && j < k

相等性测试与bool字面值

如果想测试一个算术对象或指针对象的真值,最直接的方法就是将其作为i语句的条件:

if (val) {/*...*/ }  // 如果val是任意的非0值,条件为真
if (!val) {/*...*/ } // 如果val是0,条件为真

进行比较运算时除非比较的对象是bool类型,否则不要使用bool字面值truefalse作为运算对象。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 10:22:06       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 10:22:06       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 10:22:06       58 阅读
  4. Python语言-面向对象

    2024-07-19 10:22:06       69 阅读

热门阅读

  1. 【Android】Intent基础用法及作用

    2024-07-19 10:22:06       17 阅读
  2. WPF项目实战视频《一》(主要为WPF基础知识)

    2024-07-19 10:22:06       22 阅读
  3. 解决食品安全问题只有

    2024-07-19 10:22:06       23 阅读
  4. 面经学习(杭州实在智能实习)

    2024-07-19 10:22:06       21 阅读
  5. 深入解析`Arrays.asList`的用法与潜在陷阱

    2024-07-19 10:22:06       19 阅读
  6. Kubernetes面试整理-ELK和EFK的区别?

    2024-07-19 10:22:06       18 阅读
  7. 智能合约中重放攻击

    2024-07-19 10:22:06       22 阅读
  8. 【19】读感 - 架构整洁之道(一)

    2024-07-19 10:22:06       18 阅读
  9. [C++]运算符重载

    2024-07-19 10:22:06       20 阅读
  10. 每天一个数据分析题(四百三十七)- 统计量

    2024-07-19 10:22:06       22 阅读
  11. 缓存机制如何帮助减轻雪崩效应:

    2024-07-19 10:22:06       22 阅读
  12. 接近50个实用编程相关学习资源网站

    2024-07-19 10:22:06       21 阅读