【发布时间】:2010-01-28 13:13:32
【问题描述】:
==是什么意思,和=有什么区别?
我怎么知道要使用哪一个?
【问题讨论】:
-
评论被删除,因为它们分散了对答案的注意力。 SO 在FAQ (stackoverflow.com/faq) 中有一个非常明确的
No question is too trivial or too "newbie".政策。如果您想讨论该政策,请联系meta.stackoverflow.com
==是什么意思,和=有什么区别?
我怎么知道要使用哪一个?
【问题讨论】:
No question is too trivial or too "newbie". 政策。如果您想讨论该政策,请联系meta.stackoverflow.com
== 是对相等性的测试。 = 是一个作业。
任何好的 C 书籍都应该涵盖这一点(我想在本书的早期阶段)。
例如:
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
那里没有魔法。
【讨论】:
a == b 是一个测试。
a = b称为assignment,意思是将变量a设置为与b相同的值。
(您在美式键盘布局中使用 Shift-\ 键入 |。)
【讨论】:
== 测试相等性 = 赋值
两者都与||无关
【讨论】:
我可能会在芬兰语和瑞典语键盘中添加它。管道符号; |; OR 是 AltGr(右 alt)和
当我第一次开始在这些键盘上打字时,给了我很多汗水。
【讨论】:
既然您知道 '==' 和 '=" 之间的区别,让我提醒您一些注意事项。虽然 '==' 用作可比较变量之间相等性的标准测试,而 '=' 用作内部类型转换的赋值,以下编程错误很常见。
在以下示例和类似代码中,'=' 被称为“始终为真”条件运算符。
#include<stdio.h>
int main()
{
int i = 10, j = 20;
if ( i = j )
printf("Equal\n");
else
printf("NOT Equal\n");
return 0;
}
因此,请注意“切勿在if 语句中使用'=',除非你心里有邪恶的想法。”
【讨论】: