2009-06-05 68 views
2

目前,我正在使用& &和||而不是“与”和“或”,因为这就是我的教导。然而,在大多数语言中,两者都是有效的语法。任何一种语言对于其中的一种都有什么好处?使用AND或&&有什么好处?

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

+5

你使用什么语言? – bytebender 2009-06-05 02:00:22

回答

2

你问“任何一种语言中的任何一种都有什么优点?”这当然取决于编程语言。

语言实现既and&&(以及相应or||)会做两个方面,这一个:

  • 行为都完全相同的方式。在这种情况下,语言在使用语言时没有优势。

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

这一切听起来都有点儿荒谬,但它确实如同没有谈论某种特定语言时所能得到的一样具体。你的问题明确地想知道所有的语言,但这是一个需要按语言回答的问题。

+0

你是对的,但我认为他的问题的要点是哪种语言(如果有)属于后一类,以及行为是如何不同的。我不认为他对某种特定的编程语言感兴趣。例如,他会问他:“在语言X,Y,Z是不同的行为?”并回答“否”,他想知道这些语言是否存在。 – user85509 2009-06-05 03:18:51

0

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

0

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

+0

&&也需要按住SHIFT。 – Edmund 2009-06-05 02:30:33

+0

as“AND”:) – geofftnz 2009-06-05 02:58:22

1

它取决于语言,但在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 
1

在某些语言&&将具有更高的运算符优先级比AND

0

我不确定你使用的是什么语言,但有些语言区分了正常的布尔运算符和短路运算符。例如,以下是正常布尔运算符在MATLAB:

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

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

C = A || B; 

短路语法将评价的第一个参数,然后根据在值上,可能会跳过评估第二个参数。例如,如果A已为真,则B不必针对OR操作进行评估,因为结果保证为真。当B被涉及某种昂贵计算的逻辑操作所取代时,这会很有帮助。

这里是一个wikipedia link讨论短路运营商及其几种语言的语法。

2

Perl拥有全部{& & ||和/或},但它们的优先级不同。 “和”和“或”具有非常低的优先级,因此您可以执行诸如“复杂函数调用或在$!”之类的操作。而且你不会意外地“左右”沾上你不想要的东西。

0

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

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

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