其他章节: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
字面值true
和false
作为运算对象。