Operator precedence and associativity is a very important aspect of programming as it is essential to know while coding, which operator will be taken first for evaluation as accordingly the results will vary. As we have BODMAS rule in mathematics, similarly we have operator precedence and associativity in C.

  1. Operator precedence means the order in which an operator in an expression will be evaluated.

For instance : 10*5-2 = ?  Here since multiplication operator has higher precedence hence it will be evaluated first and the answer would be 48 ((10*5)-2 )and not 30 (10*(5-2)).

  1. Associativity comes into picture when we have operators of same precedence in an expression.  It lets us know in which direction we need to start our evaluation, from left to right or right to left.

For instance: 10/5*2 = ? Here, division and multiplication have same precedence. However since operands have left to right associativity, that is starting from left we move towards right evaluating. Hence, the answer is 4 ((10*5)/2) and not 1 (10/(5*2)).
 

Precedence Operator Description Associativity
1 ++ — Suffix/postfix increment and decrement Left-to-right
() Function call
[] Array subscripting
. Structure and union member access
-> Structure and union member access through pointer
(type){list} Compound literal
2 ++ — Prefix increment and decrement Right-to-left
+ – Unary plus and minus
! ~ Logical NOT and bitwise NOT
(type) Type cast
* Indirection (dereference)
& Address-of
sizeof Size-of
_Alignof Alignment requirement
ARITHMETIC OPERATORS
3 * / % Multiplication, division, and remainder Left-to-right
+ – Addition and subtraction
4 << >> Bitwise left shift and right shift
RELATIONAL OPERATORS
5 < <= For relational operators < and ≤ respectively Left-to-right
> >= For relational operators > and ≥ respectively
== != For relational = and ≠ respectively
       
BITWISE OPERATORS
6 & Bitwise AND Left-to-right
^ Bitwise XOR (exclusive or)
| Bitwise OR (inclusive or)
LOGICAL OPERATORS
7 && Logical AND Left to right
7 || Logical OR  
8 ?: Ternary conditional Right-to-Left
9 = Simple assignment Right-to-Left
+= -= Assignment by sum and difference
*= /= %= Assignment by product, quotient, and remainder
<<= >>= Assignment by bitwise left shift and right shift
&= ^= |= Assignment by bitwise AND, XOR, and OR
10 , Comma Left-to-right

[yuzo_views]












CopyRight © 2019

CopyRight © 2019