2009-06-05 100 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) { 
    // .. 
}