C++ Operator precedence and Associativity

Operator precedence

Operator precedence determines which operator is evaluated first when an expression has more than one operators. Eg. 200-4*30 would get 80 because it is evaluated as 200 – (4*30) and not (200-4)*30. The reason is that multiplication * has higher precedence than subtraction(-).

Not as:

Associativity:

Associativity defines the order in which operators of the same precedence are evaluated in an expression. Associativity can be either from left to right or right to left.eg.‘*’ and ‘/’ have the same precedence and their associativity is Left to Right, so the expression “100 / 10 * 10” is treated as “(100 / 10) * 10”.

Not as:

The following table lists operator precedence and associativity.

OperatorMeaning of operatorAssociativity
()
[]
->
.
Functional call
Array element reference
Indirect member selection
Direct member selection
Left to right
!
~
+

++

&
*
sizeof (type)
Logical negation
Bitwise(1 's) complement
Unary plus
Unary minus
Increment
Decrement
Dereference Operator(Address)
Pointer reference
Returns the size of an object
Right to left
*
/
%
Multiply
Divide
Remainder
Left to right
+
Binary plus(Addition)
Binary minus(subtraction)
Left to right
<<
>>
Left shift
Right shift
Left to right
<
<=
>
>=
Less than
Less than or equal
Greater than
Greater than or equal
Left to right
==
!=
Equal to
Not equal to
Left to right
& Bitwise AND Left to right
^ Bitwise exclusive OR Left to right
| Bitwise OR Left to right
&& Logical AND Left to right
|| Logical OR Left to right
?: Conditional Operator Right to left
=
*=
/=
%=
-=
&=
^=
|=
<<=
>>=
Simple assignment
Assign product
Assign quotient
Assign remainder
Assign sum
Assign difference
Assign bitwise AND
Assign bitwise XOR
Assign bitwise OR
Assign left shift
Assign right shift
Right to left
, Separator of expressions Left to right