Operator Precedence and Associativity in C | Precedence and Associativity of Operators in C | C Precedence and Associativity of Operators

Precedence of Operators:

The precedence of operator determines which operator is evaluated first if there is more than one operator in an expression.

In an expression, operators with higher precedence are evaluated before those of lower precedence.


For example,         int x=55-10*5;

In C, the precedence of * is higher than and =. Hence, 10*5 is evaluated first. Then the expression involving is evaluated as the precedence of is higher than =


Associativity of operators:

An expression can contain several operators with equal precedence. When several such operators appear at the same level in an expression, evaluation proceeds according to the associativity of the operator.

The associativity of operators determines the direction in which an expression is evaluated. All operators in C have either Left to Right associativity or Right to Left associativity.

Associativity is only used when there are two or more operators of same precedence. All operators with the same precedence have same associativity.

For example:         x=1/2*3;

Here, / and * have the same precedence. Their associativity is from left to right. Hence, firstly / operation is done followed by *


The precedence and associativity of C operators is given below. Here, operators with the highest precedence appear at the top of the table, those with the lowest appear at the bottom.


Precedence

Category

Operator

Associativity

1
Postfix
() [] -> . ++ --
Left to right
2
Unary
+ - ! ~ ++ -- (type)* & sizeof
Right to left
3
Multiplicative
     *   /  %
Left to right
4
additive
+ -
Left to right
5
Shift
<<    >>
Left to right
6
Relational
<   <=   >   >=
Left to right
7
Equality
==    !=
Left to right
8
Bitwise AND
&
Left to right
9
Bitwise XOR
^
Left to right
10
Bitwise OR
|
Left to right
11
Logical AND
&&
Left to right
12
Logical OR
||
Left to right
13
Conditional
?:
Right to left
14
Assignment
= += -= *= /= %= >>= <<= &= ^= \=
Right to left
15
Comma
,
Left to right

Post a Comment

0 Comments