These can be used inside the condition of an if statement. Evaluate to true or false.
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 &&.
True if either operand is true. For example:
if (x > 0 || y > 0) {
// ...
}
is true if either x or y is greater than 0.
True if the operand is false. For example:
if (!x) {
// ...
}
is true if x is false (i.e. if x is zero).
Warning
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.
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.