逻辑运算符

2025年03月17日 | 阅读 9 分钟

运算符可以定义为一个用于执行不同操作的符号。在编程语言中,有各种类型的运算符,例如算术运算符、关系运算符、逻辑运算符、赋值运算符、增量/减量运算符、条件运算符、位运算符和移位运算符。

在本文中,我们将讨论逻辑运算符及其类型,并附带每个运算符的示例。在这里,我们将讨论所有类型的逻辑运算符,而不考虑特定的编程语言。一些编程语言支持有限的运算符,因此我们正在讨论的一些逻辑运算符可能被您正在使用的编程语言支持,也可能不支持。

逻辑运算符通常用于组合两个或多个关系语句。它们返回布尔值。逻辑运算符主要用于表达式求值以做出决策。这些运算符允许对整数内的特定位进行求值和操作。

逻辑运算符的类型及其描述如下表所示:

运算符描述
&& (逻辑与)如果与 && 组合的所有关系语句都为真,则此运算符返回 true,否则返回 false。
|| (逻辑或)如果与 || 组合的至少一个关系语句为真,则此运算符返回 true,否则返回 false。
!(逻辑非)它返回语句结果的反值。
xor (逻辑异或运算符)如果语句一为真或语句二为真,但两者不都为真,则此运算符返回 true。
and (逻辑与)如果与之组合的所有关系语句都为真,则此运算符返回 true,否则返回 false。
or (逻辑或)如果与之组合的至少一个关系语句为真,则此运算符返回 true,否则返回 false。

让我们通过示例讨论每种类型。

&& (逻辑与)

如果第一个条件为 false,则逻辑 && 运算符不会检查第二个条件。它仅在第一个条件为 true 时才检查第二个条件。逻辑 && 表达式的求值是从左到右进行的。借助其他逻辑运算符,我们可以将逻辑与转换为逻辑或。此运算符接受两个操作数。

假设我们有两个条件 AB。因此,我们可以在下表中看到 A && B 的可能值。

ABA && B
truetruetrue
FalsetrueFalse
trueFalseFalse
FalseFalseFalse

示例

让我们通过一个基本示例来理解逻辑 && 运算符的概念。

在这里,我们讨论四种情况来显示 && 运算符的可能条件,并检查其返回 false 或返回 true 的结果。在每种情况下,我们都不使用括号,因为它在技术上不是必需的。程序员经常使用它来使表达式的逻辑非常清晰。

情况 1

上面一行中的语句 1 是 10 > 20,语句 2 是 20 > 5。很明显,语句 1 为 false,这仅仅意味着运算符将不会进一步检查第二个条件,无论它是否为 true。AND 运算符仅在两个语句都为 true 时才返回 true 值。因此,我们将得到 false

情况 2

在这种情况下,运算符将再次返回 false 作为结果。上面一行中的语句 1 为 true,因此在这种情况下,运算符将进一步检查第二个语句,但第二个语句为 false,因此运算符将给我们 false 作为结果。

情况 3

在这种情况下,两个语句都为 false。因此,运算符将返回 false 作为结果。虽然它与第一种情况类似,但由于第一个语句不为 true,因此运算符将不检查第二个语句。

情况 4

在这种情况下,我们可以看到两个语句都为 true,因此运算符将返回 true 作为结果。

|| (逻辑或)

逻辑 OR 运算符由两个垂直线符号表示。它的工作方式与逻辑 AND 运算符相反,因为它仅在表达式的两个语句都不为 true 时才返回 false。否则,它返回 true。

如果第一个条件为 true,则逻辑 || 运算符不会检查第二个条件。它仅在第一个条件为 false 时才检查第二个条件。

逻辑 || 运算符接受两个操作数。假设我们有两个条件 AB。我们可以在下表中看到 A || B 的可能值。

ABA || B
truetruetrue
Falsetruetrue
trueFalsetrue
FalseFalseFalse

示例

让我们通过一个基本示例来理解逻辑 || 运算符的概念。

在这里,我们讨论四种情况来显示 || 运算符的可能条件,并检查其返回 false 或返回 true 的结果。

情况 1

上面一行中的语句 1 是 10 < 20,语句 2 是 20 < 5。很明显,语句 1 为 true,这仅仅意味着运算符将不会进一步检查第二个条件,无论它是否为 true。如前所述,当表达式的一个语句为 true 时,OR 运算符将返回 true 值。

情况 2

在这种情况下,运算符将再次返回 true 作为结果。上面一行中的语句 1 为 false,因此在这种情况下,运算符将检查第二个语句,并且由于 statement2 为 true,因此运算符将返回 true 作为结果。

情况 3

在这种情况下,两个语句都为 true,因此运算符将返回 true 作为结果。第一个语句为 true,在检查它之后,运算符将不检查第二个语句并返回 true 作为结果。

情况 4

在这里,两个语句都为 false。因此,在检查第一个语句后,由于第一个语句为 false,运算符将检查第二个语句,并且由于第二个语句也为 false,我们将得到 false 作为结果。

! (逻辑非运算符)

此逻辑运算符表示为感叹号 (!)。此运算符接受单个参数并返回相应参数的反值。

假设我们有一个操作数 A。因此,逻辑非运算符将返回 A 的相反可能值。

A!A
trueFalse
Falsetrue

如果参数的值为 false,则 NOT 运算符将返回 true,反之亦然。

示例

情况 1

在这种情况下,参数的值为 false,但由于我们使用了 NOT 运算符,我们将得到 true 作为结果。这是因为 NOT 运算符将反转参数的值。

情况 2

在这种情况下,我们将得到 false 作为结果,因为参数的值为 true。

xor (逻辑异或运算符)

XOR 是“Exclusive-OR”的缩写。“xor”关键字是 PHP 支持的逻辑运算符。当 statemen1 为 true 或 statement2 为 true,但两者不都为 true 时,它返回 true。简单来说,我们可以说 xor 运算符仅在其中一个语句为 true 而另一个语句为 false 时才返回 true。如果两个语句都为 true,则 xor 运算符将返回 false。

xor 运算符接受两个操作数,当两个操作数具有相同值时返回 false。

注意:有时,此运算符会导致混淆的结果,因为它的优先级低于赋值运算符。因此,为避免意外结果,必须将表达式括在括号中。

假设我们有两个条件 AB。因此,我们可以看到 A xor B 的可能值。

ABA xor B
truetrueFalse
Falsetruetrue
trueFalsetrue
FalseFalseFalse

and 运算符

此运算符的工作方式类似于 && 运算符。尽管 'and''&&' 的工作方式相似,但区别在于优先级。优先级决定了哪个操作应该先执行。 '&&' 运算符的优先级高于 '=' 运算符的优先级,而 'and' 的优先级低于 '=' 运算符的优先级。

它在 php 中受支持。所以,让我们通过在 php 中使用示例来理解 'and''&&' 之间的区别。在以下代码中,我们在同一个条件中使用这两个运算符。所以,让我们看看结果是否相同。尽管这两个运算符的工作方式相似,但由于优先级的原因,结果可能会有所不同。

输出

Logical operators

在同一条件下使用 'and''&&' 运算符时,输出是不同的。让我们理解一下原因。

如前所述,逻辑 and 的优先级低于赋值(=)运算符。因此,在语句 $res = TRUE and FALSE; 中,由于赋值运算符的较高优先级,首先将值 True 分配给变量 $res,然后内部执行使用 AND 运算符的操作,但现在没有赋值,因此 $res 仍然保持 true 并返回 true 作为结果。这仅仅意味着语句 $res = TRUE and FALSE; 将被解释为 (($res = TRUE) and FALSE); 因此,$res 的值将为 true

另一方面,在语句 $res = TRUE && FALSE; 中,&& 的优先级高于赋值(=)运算符,因此首先执行逻辑 && 操作,然后将结果分配给相应的变量。这就是为什么使用 && 的语句显示确切结果的原因。在这里,语句 $res = TRUE && FALSE; 将被解释为 ($res = (TRUE && FALSE)); 因此,$res 的值将为 false

所以,为了解释,两个运算符的基本区别在于它们的优先级,但基本上,两者都执行相同的操作。

or 运算符

此运算符的工作方式类似于 || 运算符。尽管 'or''II' 的工作方式相似,但区别在于优先级。优先级决定了哪个操作应该先执行。 'II' 运算符的优先级高于 '=' 运算符的优先级,而 'or' 的优先级低于 '=' 运算符的优先级。

它在 PHP 中受支持。所以,让我们通过在 PHP 中使用示例来理解 'or''||' 之间的区别。在以下代码中,我们在同一个条件上应用这两个运算符。所以,让我们看看结果是否相同。尽管这两个运算符的工作方式相似,但由于优先级的原因,结果可能会有所不同。

输出

Logical operators

在同一条件下使用 'or''||' 运算符时,输出是不同的。让我们理解一下原因。

如前所述,逻辑 or 的优先级低于赋值(=)运算符。因此,在语句 $res = FALSE or TRUE; 中,由于赋值运算符的较高优先级,首先将值 FALSE 分配给变量 $res,然后内部执行使用 or 运算符的操作,但现在没有赋值,$res 仍然保持 FALSE 并返回 FALSE 作为结果。这仅仅意味着语句 $res = FALSE or TRUE; 将被解释为 (($res = FALSE) or TRUE); 因此,$res 的值将为 false

另一方面,在语句 $res = FALSE || TRUE; 中,|| 的优先级高于赋值(=)运算符,因此首先执行逻辑 || 操作,然后将结果分配给相应的变量。这就是为什么使用 || 的语句显示确切结果的原因。在这里,语句 $res = FALSE || TRUE; 将被解释为 ($res = (FALSE || TRUE)); 因此,$res 的值将为 true

为了解释,两个运算符的基本区别在于它们的优先级,但基本上,两者都执行相同的操作。


下一个话题工程力学 MCQ