| 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
|
| 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
|
| 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 (for exceptions)
|
| 18
|
,
|
Comma
|
Left-to-right
|