目前,我正在使用 && 和 || 而不是 AND 和 OR,因为这就是我被教导的方式。然而,在大多数语言中,两者都是有效的语法。任何语言中的一个或另一个有什么优势吗?
我确实试图搜索这个问题,但这有点难。它没有正确解释我的输入。
目前,我正在使用 && 和 || 而不是 AND 和 OR,因为这就是我被教导的方式。然而,在大多数语言中,两者都是有效的语法。任何语言中的一个或另一个有什么优势吗?
我确实试图搜索这个问题,但这有点难。它没有正确解释我的输入。
Perl 有所有四个 {&& || and or} 但它们的优先级不同。“and”和“or”的优先级非常低,因此您可以执行“complex-function-call-here or die $!”之类的操作。并且您不会意外地“或”在其左侧啜饮您不希望它的东西。
你问“任何语言中的一个或另一个有什么优势吗?” 当然,这取决于编程语言。
实现and
and &&
(以及相应地or
and ||
)的语言将通过以下两种方式之一来实现:
两者的行为方式完全相同。在这种情况下,使用其中一种语言并没有提供任何优势。
每个人的行为都不同。在这种情况下,优点是您可以通过使用其中一种来获得不同的行为。
这一切听起来有点滑稽,但它确实是在不谈论特定语言的情况下尽可能具体。您的问题明确想了解所有语言,但这是一个需要每种语言回答的问题。
这取决于语言,但在 PHP 上,我会小心使用 && 与“and”。我经常使用的是“&&”和“||”
http://us3.php.net/manual/en/language.operators.logical.php
$g = true && false; // $g will be assigned to (true && false) which is false
$h = true and false; // $h will be assigned to true
在某些语言&&
中,运算符优先级高于AND
.
如果两者都工作正常,那么我会说这真的是个人喜好,在大多数情况下,它们被编译成相同的二进制代码,如下所示:11100010001000101001001010 [不是真正的代码,只是一个例子]。
&& = 同一个键的两次击键。AND = 三个不同键的击键。
我不确定您使用的是什么语言,但有些语言会区分普通布尔运算符和短路运算符。例如,以下是 MATLAB 中的普通布尔运算符:
C = or(A,B);
C = A | B; % Exactly the same as above
但是,这是一个短路运算符:
C = A || B;
短路语法将评估第一个参数,然后根据值可能会跳过评估第二个参数。例如,如果A已经为真,则不必为 OR 运算评估B ,因为可以保证结果为真。当B被替换为涉及某种昂贵计算的逻辑操作时,这很有帮助。
这是一个维基百科链接,讨论了几种语言的短路运算符及其语法。
除非没有任何优先级问题,否则我会说可读性存在差异。考虑以下:
if (&x == &y && &y == &z) {
// ..
}
#define AND &&
if (&x == &y AND &y == &z) {
// ..
}