What is the meaning of '==' in C?
What is the meaning of ==
开发者_开发百科 and how does it differ from =
?
How do I know which one to use?
==
is a test for equality. =
is an assignment.
Any good C book should cover this (fairly early on in the book I would imagine).
For example:
int i = 3; // sets i to 3.
if (i == 3) printf("i is 3\n"); // prints it.
Just watch out for the heinous:
if (i = 4) { }
which is valid C and frequently catches people out. This actually assigns 4 to the variable i
and uses that as the truth value in the if
statement. This leads a lot of people to use the uglier but safer:
if (4 == i) {}
which, if you accidentally use =
instead of ==
, is a compile-time error rather than something that will bite you on the backside while your program is running :-)
The logical-or operator is two vertical bar characters, one after the other, not a single character. Here it is lined up with a logical-and, and a variable called b4
:
||
&&
b4
No magic there.
a == b
is a test if a and b are equal.
a = b
is called an assignment, which means to set the variable a to having the same value as b.
(You type |
with Shift-\
in the US keyboard layout.)
== tests equality = assigns a value
neither are related to ||
I might add that in Finnish and Swedish keyboards. Pipe symbol; |; of OR is AltGr (the right alt) and < key. IF you are using Mac on the other hand it is Alt-7 key.
Gave me a lot of sweat when I first started typing on these keyboards.
Now that you know the difference between '==' and '=", let me put you some words of caution. Although '==' is used as a standard test of equality between comparable variables and '=' used as an internally type-casted assignment, the following programming error is quiet common.
In the below example and similar codes, '=' is know as "Always true" conditional operator.
#include<stdio.h>
int main()
{
int i = 10, j = 20;
if ( i = j )
printf("Equal\n");
else
printf("NOT Equal\n");
return 0;
}
So, the word of caution is "Never use '=
' in if
statements, unless you have something evil in your mind."
精彩评论