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);

Uses

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
   SerialUSB.println("delaying:");
   SerialUSB.println(x);
   delay(x);
}

Warning

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.:

// DON'T MAKE THIS MISTAKE
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

This documentation page was adapted from the Arduino Reference Documentation, which is released under a Creative Commons Attribution-ShareAlike 3.0 License.