几乎所有编程语言都具有逻辑运算符的概念 我在查询为什么要创建逻辑运算符。我在Google上搜索,发现它是为基于条件的操作创建的,但是我认为这是一种用法。
我对这样的答案很感兴趣:没有这个操作员,人们将面临什么挑战。如果可能,请举例说明。
答案 0 :(得分:1)
我对回答这个问题很感兴趣,因为没有这个操作员,人们将面临什么挑战。
超详细的深度嵌套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;
}
如果您不想循环,是否要编写此代码?
if (c >= 'a') {
if (c <= 'z') {
stuff;
}
}
不,您当然不会,因为与if (c >= 'a' && c <= 'z')
相比,它太可怕了,特别是如果有else
或它在另一个嵌套中时。尤其是如果您的编码风格规则要求每个嵌套级别都使用8个空格的缩进,或者在自己的行上使用{
使得每个嵌套级别都占用更多的垂直空间。
请注意,a&b
不等同于a&&b
:除了短路评估之外,。 (如果b
为假,甚至不会评估a
。) 2 & 1
为假,因为它们的整数位模式没有设置相同的位。
短路评估允许诸如while(p && p->data != 0)
之类的循环条件检查NULL指针,然后有条件地仅对非NULL进行操作。
当使用纸质电传打字机在慢速串行线路上对计算机进行编程时,紧凑的表达式非常重要。
还要注意,这些纯粹是高级级别的语言设计注意事项。 CPU硬件没有逻辑运算符之类的东西。通常需要多条指令才能在整数上实现!
(转换为0/1整数,而不用作if条件)。
if (a && b)
通常连续编译为两个测试/分支指令。