Operator Precedence in C++

The table below defines operator precedence (and associativity) in C++. Hover on any of the operators in the precedence table for further information.

A bullet () represents the operand in unary versions of some operators, for disambiguation.

P.
Arithmetic
,
Bitwise
,
Logical
,
Relational
,
Pointer/Member
and
Other

Operators
As.
1
::
::
LTR
2
++
--
.
->
[]
(args)
typeid
3
++
--
+
-
!
~
*
&
(type)
sizeof
new
delete
new[]
delete[]
RTL
4
.*
->*
LTR
5
*
/
%
Arithmetic
6
+
-
7
<<
>>
Bitwise shift
8
<
<=
>
>=
Relational
9
==
!=
10
&
Bitwise
11
^
12
|
13
&&
Logical
14
||
15
? :
=
*=
/=
%=
+=
-=
<<=
>>=
&=
^=
|=
Conditional and Assignment RTL
16
throw
N/A
17
,
LTR

Note 1: The following operators were omitted for brevity. They belong to precedence level 2.

dynamic_cast
static_cast
const_cast
reinterpret_cast

Note 2: Contrary to many sources, this is indeed the correct precedence and associativity for the ternary operator. See this.

C++ not your language? Select a different programming language.

Questions, comments ==> info (at) (this domain)

Other quick-reference sites:   db9-pinout.com | resistor-color-codes.com | hex-codes.com