几乎所有编程语言都有逻辑运算符的概念 我有一个疑问,为什么创建逻辑运算符。 我用谷歌搜索并发现它是为基于条件的操作而创建的,但我认为这是一种用法。
我对没有这个运营商的人面临什么挑战的答案感兴趣。如果可能,请举例说明。
我对没有这个运算符的人面临什么挑战的答案感兴趣。
超详细深度嵌套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)
通常连续编译为两个测试/分支指令。