C Operator Precedence and Associativity
What do you mean by Operator Precedence?
Operator precedence is used to determine the order of operators evaluated in an expression. In c programming language every operator has precedence (priority). When there is more than one operator in an expression the operator with higher precedence is evaluated first and the operator with least precedence is evaluated last.
What is Operator Associativity?
Operator associativity is used to determine the order of operators with equal precedence evaluated in an expression. In c programming language, when an expression contains multiple operators with equal precedence, we use associativity to determine the order of evaluation of those operators.
In c programming language the operator precedence and associativity is as shown in the following table…
Precedence | Operator | Operator Meaning | Associativity |
---|---|---|---|
1 | () [] -> . | function call array reference structure member access structure member access | Left to Right |
2 | ! ~ + – ++ — & * sizeof (type) | negation 1’s complement Unary plus Unary minus increment operator decrement operator address of operator pointer returns size of a variable type conversion | Right to Left |
3 | * / % | multiplication division remainder | Left to Right |
4 | + – | addition subtraction | Left to Right |
5 | << >> | left shift right shift | Left to Right |
6 | < <= > >= | less than less than or equal to greater than greater than or equal to | Left to Right |
7 | == != | equal to not equal to | Left to Right |
8 | & | bitwise AND | Left to Right |
9 | ^ | bitwise EXCLUSIVE OR | Left to Right |
10 | | | bitwise OR | Left to Right |
11 | && | logical AND | Left to Right |
12 | || | logical OR | Left to Right |
13 | ?: | conditional operator | Left to Right |
14 | = *= /= %= += -= &= ^= |= <<= >>= | assignment assign multiplication assign division assign remainder assign additon assign subtraction assign bitwise AND assign bitwise XOR assign bitwise OR assign left shift assign right shift | Right to Left |
15 | , | separator | Left to Right |
Key features in the above table are:-
The operator precedence decreases from top to bottom.
&
It increases from bottom to top.