目前,我正在使用& &和||而不是「與」和「或」,因爲這就是我的教導。然而,在大多數語言中,兩者都是有效的語法。任何一種語言對於其中的一種都有什麼好處?使用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