Precedence | Operator | Description | Associativity |
1 |
:: |
Scope resolution |
Left-to-right |
2 |
++ -- |
Suffix/postfix increment and decrement |
() |
Function call |
[] |
Array subscripting |
. |
Element selection by reference |
-> |
Element selection through pointer |
typeid() |
Run-time type information (see typeid) |
const_cast |
Type cast (see const_cast) |
dynamic_cast |
Type cast (see dynamic_cast) |
reinterpret_cast |
Type cast (see explicit_cast) |
static_cast |
Type cast (see static_cast) |
3 |
++ -- |
Prefix increment and decrement |
Right-to-left |
+ - |
Unary plus and minus |
! ~ |
Logical NOT and bitwise NOT |
(type) |
Type cast |
* |
Indirection (dereference) |
& |
Address-of |
sizeof |
Size-of |
new , new[] |
Dynamic memory allocation |
delete , delete[] |
Dynamic memory deallocation |
4 |
.* ->* |
Pointer to member |
Left-to-right |
5 |
* / % |
Multiplication, division, and remainder/modulus[1] |
6 |
+ - |
Addition and subtraction |
7 |
<< >> |
Bitwise left shift and right shift |
8 |
< <= |
For relational operators < and ≤ respectively |
> >= |
For relational operators > and ≥ respectively |
9 |
== != |
For relational = and ≠ respectively |
10 |
& |
Bitwise AND |
11 |
^ |
Bitwise XOR (exclusive or) |
12 |
| |
Bitwise OR (inclusive or) |
13 |
&& |
Logical AND |
14 |
|| |
Logical OR |
15 |
?: |
Ternary conditional |
Right-to-Left |
16 |
= |
Direct assignment (provided by default for C++ classes) |
+= -= |
Assignment by sum and difference |
*= /= %= |
Assignment by product, quotient, and remainder |
<<= >>= |
Assignment by bitwise left shift and right shift |
&= ^= |= |
Assignment by bitwise AND, XOR, and OR |
17 |
throw |
Throw operator (exceptions throwing) |
18 |
, |
Comma |
Left-to-right |