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