Arduino - Operators
In Arduino programming, operators are symbols that perform operations on variables and values. They are similar to operators in other programming languages like C and C++. Arduino supports a wide range of operators, including arithmetic, comparison, logical, bitwise, and assignment operators. Here's an overview of the commonly used operators in Arduino:
Arithmetic Operators
Arithmetic operators are used to perform mathematical operations like addition, subtraction, multiplication, division, and modulus.
-
Addition (
+
): Adds two operands.cppint result = 10 + 5; // result is 15
-
Subtraction (
-
): Subtracts right operand from left operand.cppint result = 10 - 5; // result is 5
-
Multiplication (
*
): Multiplies two operands.cppint result = 10 * 5; // result is 50
-
Division (
/
): Divides left operand by right operand.cppint result = 10 / 5; // result is 2
-
Modulus (
%
): Computes remainder of division of left operand by right operand.cppint result = 10 % 3; // result is 1 (remainder of 10 divided by 3)
Comparison Operators
Comparison operators are used to compare two values. They return a boolean value (true
or
false
).
-
Equal to (
==
): Checks if the values of two operands are equal.cppbool isEqual = (10 == 5); // isEqual is false
-
Not equal to (
!=
): Checks if the values of two operands are not equal.cppbool isNotEqual = (10 != 5); // isNotEqual is true
-
Greater than (
>
): Checks if left operand is greater than right operand.cppbool isGreater = (10 > 5); // isGreater is true
-
Less than (
<
): Checks if left operand is less than right operand.cppbool isLess = (10 < 5); // isLess is false
-
Greater than or equal to (
>=
): Checks if left operand is greater than or equal to right operand.cppbool isGreaterOrEqual = (10 >= 5); // isGreaterOrEqual is true
-
Less than or equal to (
<=
): Checks if left operand is less than or equal to right operand.cppbool isLessOrEqual = (10 <= 5); // isLessOrEqual is false
Logical Operators
Logical operators are used to combine multiple conditions.
-
Logical AND (
&&
): Returns true if both operands are true.cppbool result = (true && false); // result is false
-
Logical OR (
||
): Returns true if either operand is true.cppbool result = (true || false); // result is true
-
Logical NOT (
!
): Reverses the logical state of its operand.cppbool result = !true; // result is false
Bitwise Operators
Bitwise operators perform operations on bits of integers.
-
Bitwise AND (
&
): Performs bitwise AND on two integers.cppint result = 5 & 3; // result is 1 (binary: 101 & 011 = 001)
-
Bitwise OR (
|
): Performs bitwise OR on two integers.cppint result = 5 | 3; // result is 7 (binary: 101 | 011 = 111)
-
Bitwise XOR (
^
): Performs bitwise XOR on two integers.cppint result = 5 ^ 3; // result is 6 (binary: 101 ^ 011 = 110)
-
Bitwise NOT (
~
): Inverts all bits of an integer.cppint result = ~5; // result is -6 (binary: ~00000101 = 11111010)
-
Left Shift (
<<
): Shifts bits to the left by a specified number of positions.cppint result = 5 << 2; // result is 20 (binary: 00000101 << 2 = 00010100)
-
Right Shift (
>>
): Shifts bits to the right by a specified number of positions.cppint result = 5 >> 1; // result is 2 (binary: 00000101 >> 1 = 00000010)
Assignment Operators
Assignment operators are used to assign values to variables.
-
Assignment (
=
): Assigns right operand's value to left operand.cppint a = 10;
-
Addition assignment (
+=
): Adds right operand to left operand and assigns the result to left operand.cppint a = 10; a += 5; // equivalent to a = a + 5; (a is now 15)
-
Subtraction assignment (
-=
): Subtracts right operand from left operand and assigns the result to left operand.cppint a = 10; a -= 3; // equivalent to a = a - 3; (a is now 7)
-
Multiplication assignment (
*=
): Multiplies right operand with left operand and assigns the result to left operand.cppint a = 10; a *= 2; // equivalent to a = a * 2; (a is now 20)
-
Division assignment (
/=
): Divides left operand by right operand and assigns the result to left operand.cppint a = 10; a /= 3; // equivalent to a = a / 3; (a is now 3)
-
Modulus assignment (
%=
): Computes remainder after division of left operand by right operand and assigns the result to left operand.cppint a = 10; a %= 3; // equivalent to a = a % 3; (a is now 1)
Increment and Decrement Operators
Increment (++
) and decrement (--
) operators are used to increase or decrease the value
of a variable by 1.
-
Increment (
++
): Increases the value of the operand by 1.cppint a = 5; a++; // equivalent to a = a + 1; (a is now 6)
-
Decrement (
--
): Decreases the value of the operand by 1.cppint a = 5; a--; // equivalent to a = a - 1; (a is now 4)
Conditional Operator (Ternary Operator)
The conditional operator (?:
) is used for conditional expressions and is shorthand for
if-else
statements.
cppint a = 5;
int b = 10;
int max = (a > b) ? a : b; // max is assigned the larger of a and b
Operator Precedence
Operators in Arduino, as in C/C++, follow operator precedence rules. Operators with
higher precedence are
evaluated first. Parentheses ()
can be used to override precedence.