What is the meaning of '==' in C?

c, syntax

Solution

`==` 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.

Problem

What is the meaning of `==` and how does it differ from `=`? How do I know which one to use?

Original source