为什么要创建逻辑运算符?

时间:2018-09-28 11:45:03

标签: programming-languages logical-operators language-design

几乎所有编程语言都具有逻辑运算符的概念 我在查询为什么要创建逻辑运算符。我在Google上搜索,发现它是为基于条件的操作创建的,但是我认为这是一种用法。

我对这样的答案很感兴趣:没有这个操作员,人们将面临什么挑战。如果可能,请举例说明。

1 个答案:

答案 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)通常连续编译为两个测试/分支指令。