Skip to content

关系运算符

我们可以用关系运算符,判等运算符和逻辑运算符来构建逻辑表达式。在 C 语言中,逻辑表达式的值为 0 或者 1 (0表示false, 1表示true)。

C语言中的关系运算符包括:

  1. 不等于 (!=)
  2. 大于 (>)
  3. 小于 (<)
  4. 大于或等于 (>=)
  5. 小于或等于 (<=)

关系运算符都是比较简单的,我们不再赘述。一些小的注意事项细节如下:

  1. 关系运算符组成的表达式的主要作用是返回一个布尔值,也就是两个操作数比较的结果。
  2. 关系运算符经常和逻辑运算符一起,组成一个逻辑表达式(或称布尔表达式),结果返回一个布尔值。

注意

表达式 i < j < k 在 C 语言中是合法的,但可能不是你所期望的含义。

i < j < k 等价于 (i < j) < k ,换句话说,该表达式首先检测 i 是否小于 j,然后用比较后产生的结果 (0 或者 1) 和 k 进行比较。

若要测试 j 是否位于 i 和 k 之间,我们应该使用:i < j && j < k

C 语⾔的比较运算中, “真”用数字“1”来表示, “假”用数字“0”来表示。

运算符术语示例结果
==相等于4 == 30
!=不等于4 != 31
<小于4 < 30
>大于4 > 31
<=小于等于4 <= 30
>=大于等于4 >= 11

判等运算符

判等运算符包含: ==, != 。判等运算符的优先级低于关系运算符,并且也是左结合的。

cpp
i < j == j < k 等价于 (i < j) == (j < k)

逻辑运算符

运算符术语示例结果
!!a如果a为假,则!a为真 如果a为真,则!a为假。
&&a && b如果a和b都为真,则结果为真,否则为假。
``

C语言的逻辑运算符非常简单,只有三个:

  1. 短路与(&&):当且仅当两个操作数都为真(非零)时,结果为真。
  2. 短路或(||):如果至少一个操作数为真(非零),结果为真。
  3. 逻辑非(!):一元运算符,只对单个操作数取反。如果操作数为真(非零),结果为假(0);如果操作数为假(0),结果为真(非零)。

所谓的短路指的是:

  1. 短路与(&&),如果左操作数的值已经是假(零值)了,那么右操作数则不进行计算,直接返回false。
  2. 短路或(||),如果左操作数的值已经是真(非零值)了,那么右操作数则不进行计算,直接返回true。

短路的好处不仅仅是减少运算次数,提高效率,,比如:

(i != 0) && (j / i > 0)

如果没有短路计算,上面的表达式可能就会出现除零错误,导致程序崩溃。