2010-01-28 41 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