Comparison Operators (==, !=, <, >, <=, >=)

The comparison operators ==, !=, <, >, <=, and >= are used to compare two numbers. They are true when the comparison is true, and false otherwise. They are based on the symbols =, ≠, <, >, ≤, and ≥ from mathematics.

Here are some examples, with their meaning in comments:

// "eq" is true when x is equal to y
bool eq = (x == y);

// "neq" is true when x is different than y
bool neq = (x != y);

// "lt" is true when x is less than, but NOT equal to, y
bool lt = (x <  y);

// "gt" is true when x is greater than, but NOT equal to, y
bool gt = (x >  y);

// "lte" is true when x is less than or equal to y
bool lte = (x <= y);

// "gte" is true when x is greater than or equal to y
bool gte = (x >= y);

The parentheses are optional; they are present only for clarity. For example, the following two lines are the same:

bool eq = x == y;

bool eq = (x == y);


Comparison operators, along with boolean operators, are useful inside the conditionals of if statements. Here’s one example:

if (x < 50) {
   // only execute these lines if x is less than 50


Beware of accidentally using the single equal sign (=) when you meant to test if two numbers are equal (==). This is a common mistake inside of if statement conditionals, e.g.:

if (x = 10) {
   // body

The single equal sign is the assignment operator, and sets x to 10 (puts the value 10 into the variable x). Instead use the double equal sign (e.g. if (x == 10)), which is the comparison operator, and tests whether x is equal to 10 or not. The latter statement is only true if x equals 10, but the former statement will always be true.

This is because C evaluates the statement if (x=10) as follows: 10 is assigned to x (remember that the single equal sign is the assignment operator), so x now contains 10. Then the ‘if’ conditional evaluates 10, which evaluates to true, since any non-zero number evaluates to true.

Consequently, the conditional of an if statement like if (x = 10) {...} will always evaluate to true, and the variable x will be set to 10, which is probably not what you meant.

(This sometimes has uses, though, so just because an assignment appears within a conditional doesn’t mean it’s automatically wrong. Be careful to know what you mean.)

License and Attribution

Portions of this page were adapted from the Arduino Reference Documentation, which is released under a Creative Commons Attribution-ShareAlike 3.0 License.