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 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
Dereference Operator(Address)
Pointer reference
Returns the size of an object
Right to left
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