跳转到内容

编程基础/逻辑运算符

来自维基教科书,开放的书籍,构建开放的世界

逻辑运算符是一种符号或词语,用于连接两个或多个表达式,使得生成的复合表达式的值仅取决于原始表达式的值和运算符的含义。[1] 常见的逻辑运算符包括 AND、OR 和 NOT。

在大多数语言中,产生布尔数据类型值的表达式分为两组。一组在表达式中使用关系运算符,另一组在表达式中使用逻辑运算符。

逻辑运算符通常用于帮助创建控制程序流的测试表达式。这种类型的表达式也称为布尔表达式,因为它们在评估时会产生布尔答案或值。有三个常见的逻辑运算符通过操作其他布尔操作数来给出布尔值。运算符符号和/或名称因不同的编程语言而异。

语言 AND OR NOT
C++ && || !
C# && || !
Java && || !
JavaScript && || !
Python and or not
Swift && || !

竖线或管道符号与反斜杠 \ 在同一个键上。使用 SHIFT 键来获取它。它位于大多数键盘上的 Enter 键上方。在某些键盘上它可能是一条实线,在某些印刷字体中显示为实线。

在大多数语言中,都有严格的规则来形成正确的逻辑表达式。例如:

6 > 4 && 2 <= 14

6 > 4 and 2 <= 14

此表达式有两个关系运算符和一个逻辑运算符。使用运算符优先级规则,两个“关系比较”运算符将在“逻辑与”运算符之前完成。因此

true && true

True and True

表达式的最终评估结果为:true。

我们可以用英语说:六大于四,二小于或等于十四,这是真的。

在形成逻辑表达式时,程序员经常使用圆括号(即使从技术上讲不需要),以使表达式的逻辑非常清晰。考虑上面重写的复杂布尔表达式

(6 > 4) && (2 <= 14)

(6 > 4) and (2 <= 14)

大多数编程语言将任何非零值识别为 true。这使得以下表达式有效

6 > 4 && 8

6 > 4 and 8

但请记住运算顺序。用英语来说,这是六大于四,八不为零。因此

true && true

True and True

要将 6 与 4 和 8 进行比较,应改为写成

6 > 4 && 6 > 8

6 > 4 and 6 > 8

这将被评估为 false,因为

true && false

True and False

真值表

[编辑 | 编辑源代码]

真值表是显示逻辑关系的一种常用方法。

逻辑 AND
x y x and y
false false false
false true false
true false false
true true true
逻辑 OR
x y x or y
false false false
false true true
true false true
true true true
逻辑 NOT
x not x
false true
true false

看看以下假设场景

AND

A mother tells her son, he must clean his room AND do his homework to go outside. If the son only does one of the tasks his mother asks of him, he will not be allowed outside because he has failed to complete the other task. 

记住本课中的内容,当使用 'AND' 语句时,相同的逻辑适用,程序将不会运行与 true 条件关联的语句,除非 'AND' 语句中的所有条件都为 true。

OR

Karen is told she can get an 'A' if she writes an essay OR successfully hacks into the class gradebook. By saying OR the teacher has given Karen two possible ways to get an 'A'. Each way is entirely independent from the other so she does not have to do both tasks to get an 'A' only one. 

记住本课中的内容,当使用 'OR' 语句时,'OR' 语句中列出的条件只要有一个为 true,就会运行与 true 条件关联的语句。

NOT

Mark is told he can only go to the club if he's NOT Steve. This is due to Steve being banned from the club for rowdy behavior. While Mark and Steve look a like, they are not the same person. Mark proves this by showing the bouncer his 'I.D.'. Since Mark is NOT Steve the bouncer lets him in and for the rest of the night he has a great time.

记住本课中的内容,当使用 'NOT' 语句时,程序会将任何与列出语句的值相等的值视为 false。只有与语句值 'NOT' 相等的情况才会运行为 true。


有道理吧?希望你能将这些应用到下面列出的表达式示例中。

示例

  • 25 < 7 || 15 > 36
  • 15 > 36 || 3 < 7
  • 14 > 7 && 5 <= 5
  • 4 > 3 && 17 <= 7
  • ! false
  • ! (13 != 7)
  • 9 != 7 && ! 0
  • 5 > 1 && 7

更多示例

  • 25 < 7 or 15 > 36
  • 15 > 36 or 3 < 7
  • 14 > 7 and 5 <= 5
  • 4 > 3 and 17 <= 7
  • not False
  • not (13 != 7)
  • 9 != 7 and not 0
  • 5 > 1 and 7


关键术语

[编辑 | 编辑源代码]
逻辑运算符
用于创建复杂的布尔表达式的运算符。
测试表达式
也称为布尔表达式。
真值表
显示逻辑关系的一种常用方法。

参考文献

[编辑 | 编辑源代码]
华夏公益教科书