# Associativity of operators

Associativity is used when two operators of same precedence appear in an expression. Associativity of operators in C can be either **Left to Right** or **Right to Left**. For example **‘*’** and **‘/’** have same precedence and their associativity is Left to Right, so the expression “100 / 10 * 10” is treated as “(100 / 10) * 10”.

## Why Associativity is used ?

## Example :-

100 / 10 + 10

Here **/** has higher precedence or priority than **+** So compiler here knows how to solve this equation.
It will be solved as (100/10) + 10 = 20

## Consider this example :-

100 / 10 *10

Here **/** and ***** have same precedence that means both of these operators have same priorities. **So how does compiler now know how to solve this ?**. Even though **order of precedence** is important **associativity** of operators has to be taken into consideration when two operators has same precedence like in this case.
Here **associativity** defines the order to solve this equation from left to right(100/10) * 10 or from right to left 100/ (10*10).
And since **/ *** operators have associativity from **left to right.**

**So the equation**

100 / 10 *10 will be solved like this (100/10) * 10 = 10

## Example:

100 / (10 *10) will be solved like this 100 / 100

## Output:

1

Since **( )** brackets have higher precedence or priority than any other operators. Always remember this.

## Following table list the C operators according to their order of precedence and associativity :-

Operators | Description | Associativity |
---|---|---|

( ) | Parentheses | Left - Right |

[ ] | Array Subscripts | |

. | Member selection via object name | |

-> | Member selection via pointer | |

++ — | Postfix increment/decrement | |

++ — | Prefix increment/decrement | right-to-left |

+ – | Unary plus/minus | |

! ~ | Logical negation/bitwise complement | |

(type) | Cast (convert value to temporary value of type) | |

* | Dereference | |

& | Address (of operand) | |

sizeof | Determine size in bytes on this implementation | |

* / % | Multiplication/division/modulus | left-to-right |

+ – | Addition/subtraction | |

<< >> | Bitwise shift left, Bitwise shift right | |

< <= | Relational less than/less than or equal to | |

> >= | Relational greater than/greater than or equal to | |

== != | Relational is equal to/is not equal to | |

& ^ | Bitwise AND, Bitwise OR | |

| | Bitwise inclusive OR | |

&& | Logical AND | |

| | | Logical OR | |

? : | Ternary conditional | right-to-left |

= | Assignment | |

+= -= | Addition/subtraction assignment | |

*= /= | Multiplication/division assignment | |

%= &= | Modulus/bitwise AND assignment | |

^= |= | Bitwise exclusive/inclusive OR assignment | |

<<= >>= | Bitwise shift left/right assignment | |

<<= >>= | Bitwise shift left/right assignment | |

, | Comma (separate expressions) | left-to-right |

So this was all about C Operator Precedence and Associativity of Operators in C language. In next article we will cover different types of operators in C. Happy Learning !

## Solve the Quiz of Article

**
**

**codzify.com**

Largest collection of up-to-date tutorials to learn programming languages. We are focused on easy learning. Massive collection of interview questions one may need for preparation.

**Tutorials Library**

C, C++, Java, Python Data Structures, Swift, Objective C, Swift iOS, iOS Objective C, Socket.Io, Android, Extras by Codzify.