2010-01-28 177 views
6

==是什麼意思?它與=有什麼不一樣?C中'=='的含義是什麼?

我如何知道使用哪一個?

+4

評論被刪除,因爲他們分心注意力從答案。 SO有一個非常明確的政策:「沒有問題是太瑣碎或太」新手「。」常見問題解答(http://stackoverflow.com/faq)中說。如果您想討論該政策,請在http://meta.stackoverflow.com/ – 2010-01-28 13:58:19

回答

20

==是一個測試的平等。 =是一項任務。這本書應該涵蓋這本書(在我可以想象的書的早期)。

例如:

int i = 3;      // sets i to 3. 
if (i == 3) printf("i is 3\n"); // prints it. 

只要留意令人髮指:

if (i = 4) { } 

這是有效的C,經常捕捉的人出來。這實際上是 4分配給變量i,並將其用作if語句中的真值。這導致很多人用醜陋但更安全:

if (4 == i) {} 

,如果你不小心使用=代替==,是一個編譯時錯誤,而不是東西會咬你的,而你的程序背面正在運行:-)

邏輯或運算符是兩個豎線字符,一個接一個,不是單個字符。有

|| 
&& 
b4 

沒有魔法:這是排隊與邏輯和,以及可變稱爲b4

+6

上加以說明。簡單,明確,不屈尊敬。 +1。 – 2010-01-28 13:39:26

+0

http://www.cppreference.com/wiki/operator_precedence,http://www.cplusplus.com/doc/tutorial/。當我學習C++時,通過這些網站檢查他們是真正的幫助。 – 2010-01-28 13:50:05

5

==測試平等 =分配一個值

既不涉及||

11

a == b測試如果一個b是相等的。

a = b稱爲分配,這意味着一個設置變量具有相同的值b

(你在美國的鍵盤佈局鍵入|與按住Shift \。)

3

我想補充的是芬蘭語和瑞典語鍵盤。管道符號; |;的OR是AltGr(右ALT)和<鍵。另一方面,如果您使用的是Mac,則它是Alt-7鍵。

當我第一次開始在這些鍵盤上打字時,給了我很多汗水。

2

現在你已經知道'=='和'=「之間的區別了,讓我給你一些小心的字眼,雖然'=='被用作可比變量與'='之間相等性的標準測試作爲內部類型轉換的分配,以下編程錯誤很常見。

在下面的示例和類似代碼中,'='被稱爲「總是爲真」的條件運算符。

#include<stdio.h> 
int main() 
{ 
    int i = 10, j = 20; 
    if (i = j) 
     printf("Equal\n"); 
    else 
     printf("NOT Equal\n"); 
    return 0; 
} 

所以,謹慎的字是「從來沒有在if語句中使用‘=’,除非你在你的心中有邪惡的東西。」

+3

什麼?沒有什麼比如此優雅:if(fh = fopen(「file.txt」,「r」){process_file(fh); close(fh);} // :-) – paxdiablo 2010-01-28 14:12:26

+0

我也稱之爲「永遠是真的並把我當作獎金「有條件的操作員。但好的建議,所以+1。 – paxdiablo 2010-01-28 14:14:32

+0

@paxdiablo:你是對的......但我希望我的話只適合初學者。然而,在愚蠢的代碼,如果我想重複的文件描述符爲'fh'這將導致失誤:if(fd = fh = fopen(「file.txt」,「r」){// some code}; – 2010-01-28 14:30:25