Boolean Operators

These can be used inside the condition of an if statement. Evaluate to true or false.

&& (logical and)

True only if both operands are true. For example:

if (digitalRead(2) == HIGH  && digitalRead(3) == HIGH) { // read two switches
  // ...

is true only if both inputs are high. Another example:

if (a >= 10 && a <= 20){}   // true if a is between 10 and 20

Be careful not to say 10 <= a <= 20! This won’t work the way you want. You have to separately test whether a is at least 10 using a >= 10, then test whether a is at most 20 using a <= 20, then combine the results using &&.

|| (logical or)

True if either operand is true. For example:

if (x > 0 || y > 0) {
  // ...

is true if either x or y is greater than 0.

! (logical not)

True if the operand is false. For example:

if (!x) {
  // ...

is true if x is false (i.e. if x is zero).

Some Advice


Make sure you don’t mistake the boolean AND operator && (double ampersand) for the bitwise AND operator & (single ampersand). They are entirely different beasts.

Similarly, do not confuse the boolean OR operator || (double pipe) with the bitwise OR operator | (single pipe).

The bitwise NOT operator ~ (tilde) looks much different than the boolean not operator ! (exclamation point, or “bang”, as some programmers say), but you still have to be sure which one you want.

See Also

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.