为什么要创建逻辑运算符?
Why were Logical Operators created?
几乎所有的编程语言都有逻辑运算符的概念
我想知道为什么要创建逻辑运算符。我用谷歌搜索并发现它是为基于条件的操作而创建的,但我认为这是一种用法。
我很想知道如果没有这个操作员,人们会面临哪些挑战。请尽可能举例说明。
I am interested in the answer that what are the challenges people faced without this operator.
超级详细的深度嵌套 if()
条件,尤其是循环条件。
while (a && b) {
a = something;
b = something_else;
}
没有逻辑运算符的写法变成:
while (a) {
if (!b) break; // or if(b){} else break; if you want to avoid logical ! as well
a = something;
b = something_else;
}
of如果你不想循环,要不要这样写?
if (c >= 'a') {
if (c <= 'z') {
stuff;
}
}
不,你当然不需要,因为与 if (c >= 'a' && c <= 'z')
相比,它太可怕了,特别是如果有一个 else
,或者这是在另一个嵌套中。特别是如果您的编码风格规则要求每个嵌套级别有 8-space 缩进,或者 {
在其自己的行上使得每个嵌套级别吃得更垂直 space。
请注意 a&b
不 等同于 a&&b
:即使除了短路评估 。 (如果 a
为假,甚至不会评估 b
。)例如2 & 1
是错误的,因为它们的整数位模式没有任何相同的位集。
短路评估允许像 while(p && p->data != 0)
这样的循环条件检查 NULL 指针,然后有条件地只对非 NULL 做一些事情。
当使用纸质电传打字机在慢速串行线上对计算机进行编程时,紧凑的表达式非常重要。
另请注意,这些纯粹是高级语言设计考虑因素。 CPU 硬件没有逻辑运算符之类的东西;通常需要多条指令才能在整数上实现 !
(变成 0/1 整数,而不是用作 if 条件时)。
if (a && b)
通常编译为连续的两条 test/branch 指令。
几乎所有的编程语言都有逻辑运算符的概念 我想知道为什么要创建逻辑运算符。我用谷歌搜索并发现它是为基于条件的操作而创建的,但我认为这是一种用法。
我很想知道如果没有这个操作员,人们会面临哪些挑战。请尽可能举例说明。
I am interested in the answer that what are the challenges people faced without this operator.
超级详细的深度嵌套 if()
条件,尤其是循环条件。
while (a && b) {
a = something;
b = something_else;
}
没有逻辑运算符的写法变成:
while (a) {
if (!b) break; // or if(b){} else break; if you want to avoid logical ! as well
a = something;
b = something_else;
}
of如果你不想循环,要不要这样写?
if (c >= 'a') {
if (c <= 'z') {
stuff;
}
}
不,你当然不需要,因为与 if (c >= 'a' && c <= 'z')
相比,它太可怕了,特别是如果有一个 else
,或者这是在另一个嵌套中。特别是如果您的编码风格规则要求每个嵌套级别有 8-space 缩进,或者 {
在其自己的行上使得每个嵌套级别吃得更垂直 space。
请注意 a&b
不 等同于 a&&b
:即使除了短路评估 。 (如果 a
为假,甚至不会评估 b
。)例如2 & 1
是错误的,因为它们的整数位模式没有任何相同的位集。
短路评估允许像 while(p && p->data != 0)
这样的循环条件检查 NULL 指针,然后有条件地只对非 NULL 做一些事情。
当使用纸质电传打字机在慢速串行线上对计算机进行编程时,紧凑的表达式非常重要。
另请注意,这些纯粹是高级语言设计考虑因素。 CPU 硬件没有逻辑运算符之类的东西;通常需要多条指令才能在整数上实现 !
(变成 0/1 整数,而不是用作 if 条件时)。
if (a && b)
通常编译为连续的两条 test/branch 指令。