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

我确实尝试过寻找这个问题,但有点难。它不能正确解释我的输入。

有帮助吗?

解决方案

您问“任何语言中有什么优势?”当然,这取决于编程语言。

实现两者的语言 and&& (并且相应地 or||) 将通过以下两种方式之一执行此操作:

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

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

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

其他提示

的Perl具有{&&所有四个||和或},但他们在不同的优先级。 “与”和“或”具有非常低的优先级,所以你可以做这样的事情“复杂的函数调用,在这里或死$!”你不小心就会有“或”啜了在其左侧的东西,你不希望它。

这取决于语言,但在PHP,我会小心使用&&与“和”。那些我经常使用是“&&”和“||”

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 = 3次击键不同的密钥。

我不知道你使用的是什么语言,但一些语言正常的布尔运算符和短路运营商之间进行区分。例如,以下是正常布尔运算符在MATLAB:

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

然而,这是一个短路操作:

C = A || B;

短路语法将评价的第一个参数,然后,根据不同的值,将有可能跳过评估第二个参数。例如,如果的 A 已经真,的不具有用于执行或操作进行评估,因为结果是保证是正确的。这是有益的,当的将替换涉及某种昂贵运算的逻辑运算。

下面的讨论短路运营商及其语法几个一个维基百科链接语言。

除非没有任何优先的问题,我会说,有可读性的差异。考虑以下几点:

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

#define AND &&
if (&x == &y AND &y == &z) {
    // ..
}
scroll top