使用AND或&&有什么好处?
目前,我正在使用& &和||而不是“与”和“或”,因为这就是我的教导。然而,在大多数语言中,两者都是有效的语法。任何一种语言对于其中的一种都有什么好处?使用AND或&&有什么好处?
我确实试图寻找这个问题,但它有点难。它没有正确解释我的输入。
你问“任何一种语言中的任何一种都有什么优点?”这当然取决于编程语言。
语言实现既and
和&&
(以及相应or
和||
)会做两个方面,这一个:
行为都完全相同的方式。在这种情况下,语言在使用语言时没有优势。
每个行为都有所不同。在这种情况下,其优点是可以通过使用其中一种获得不同的行为。
这一切听起来都有点儿荒谬,但它确实如同没有谈论某种特定语言时所能得到的一样具体。你的问题明确地想知道所有的语言,但这是一个需要按语言回答的问题。
你是对的,但我认为他的问题的要点是哪种语言(如果有)属于后一类,以及行为是如何不同的。我不认为他对某种特定的编程语言感兴趣。例如,他会问他:“在语言X,Y,Z是不同的行为?”并回答“否”,他想知道这些语言是否存在。 – user85509 2009-06-05 03:18:51
如果两个正常工作的话,我会说这是真的个人喜好,在大多数情况下,它们被编译成相同的二进制代码:11100010001000101001001010 [不是真正的代码,只是一个例子。
它取决于语言,但在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
。
我不确定你使用的是什么语言,但有些语言区分了正常的布尔运算符和短路运算符。例如,以下是正常布尔运算符在MATLAB:
C = or(A,B);
C = A | B; % Exactly the same as above
然而,这是一个短路操作者:
C = A || B;
短路语法将评价的第一个参数,然后根据在值上,可能会跳过评估第二个参数。例如,如果A已为真,则B不必针对OR操作进行评估,因为结果保证为真。当B被涉及某种昂贵计算的逻辑操作所取代时,这会很有帮助。
这里是一个wikipedia link讨论短路运营商及其几种语言的语法。
Perl拥有全部{& & ||和/或},但它们的优先级不同。 “和”和“或”具有非常低的优先级,因此您可以执行诸如“复杂函数调用或在$!”之类的操作。而且你不会意外地“左右”沾上你不想要的东西。
除非没有任何优先问题,否则我会说在可读性方面存在差异。考虑以下几点:
if (&x == &y && &y == &z) {
// ..
}
#define AND &&
if (&x == &y AND &y == &z) {
// ..
}
你使用什么语言? – bytebender 2009-06-05 02:00:22