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

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