It is important to understand that operators have a precedence, but it is not essential to memorize the precedence.
Higher precedence operators "bind tighter" than lower precedence operators;
thus, higher precedence operators are evaluated first. The lower the rank in the
following chart, the higher the precedence.
Table A.1. Operator Precedence.
Rank | Name | Operator |
1 | scope resolution | :: |
2 | member selection, subscripting, | . -> |
function calls, postfix increment | () | |
and decrement | ++ -- | |
3 | sizeof, prefix increment and decrement, | ++ -- |
complement, and, not, unary minus and plus, | ^ ! | |
address of and dereference, new, new[], delete, | - + | |
delete[], casting, sizeof(), | & * | |
() | ||
4 | member selection for pointer | .* ->* |
5 | multiply, divide, modulo | * / % |
6 | add, subtract | + - |
7 | shift | << >> |
8 | inequality relational | < <= > >= |
9 | equality, inequality | == != |
10 | bitwise AND | & |
11 | bitwise exclusive OR | ^ |
12 | bitwise OR | | |
13 | logical AND | && |
14 | logical OR | || |
15 | conditional | ?: |
16 | assignment operators | = *= /= %= |
+= -= <<= >>= | ||
&= |= ^= | ||
17 | throw operator | throw |
18 | comma | , |