2

目前,我正在使用 && 和 || 而不是 AND 和 OR,因为这就是我被教导的方式。然而,在大多数语言中,两者都是有效的语法。任何语言中的一个或另一个有什么优势吗?

我确实试图搜索这个问题,但这有点难。它没有正确解释我的输入。

4

8 回答 8

2

Perl 有所有四个 {&& || and or} 但它们的优先级不同。“and”和“or”的优先级非常低,因此您可以执行“complex-function-call-here or die $!”之类的操作。并且您不会意外地“或”在其左侧啜饮您不希望它的东西。

于 2009-06-05T02:19:00.580 回答
2

你问“任何语言中的一个或另一个有什么优势吗?” 当然,这取决于编程语言。

实现andand &&(以及相应地orand ||)的语言将通过以下两种方式之一来实现:

  • 两者的行为方式完全相同。在这种情况下,使用其中一种语言并没有提供任何优势。

  • 每个人的行为都不同。在这种情况下,优点是您可以通过使用其中一种来获得不同的行为。

这一切听起来有点滑稽,但它确实是在不谈论特定语言的情况下尽可能具体。您的问题明确想了解所有语言,但这是一个需要每种语言回答的问题。

于 2009-06-05T02:55:00.537 回答
1

这取决于语言,但在 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
于 2009-06-05T02:03:26.540 回答
1

在某些语言&&中,运算符优先级高于AND.

于 2009-06-05T02:05:43.260 回答
0

如果两者都工作正常,那么我会说这真的是个人喜好,在大多数情况下,它们被编译成相同的二进制代码,如下所示:11100010001000101001001010 [不是真正的代码,只是一个例子]。

于 2009-06-05T02:02:07.790 回答
0

&& = 同一个键的两次击键。AND = 三个不同键的击键。

于 2009-06-05T02:03:13.497 回答
0

我不确定您使用的是什么语言,但有些语言会区分普通布尔运算符和短路运算符。例如,以下是 MATLAB 中的普通布尔运算符:

C = or(A,B);
C = A | B;  % Exactly the same as above

但是,这是一个短路运算符:

C = A || B;

短路语法将评估第一个参数,然后根据值可能会跳过评估第二个参数。例如,如果A已经为真,则不必为 OR 运算评估B ,因为可以保证结果为真。B被替换为涉及某种昂贵计算的逻辑操作时,这很有帮助。

这是一个维基百科链接,讨论了几种语言的短路运算符及其语法。

于 2009-06-05T02:10:12.190 回答
0

除非没有任何优先级问题,否则我会说可读性存在差异。考虑以下:

if (&x == &y && &y == &z) {
    // ..
}

#define AND &&
if (&x == &y AND &y == &z) {
    // ..
}
于 2009-06-05T06:24:32.997 回答