If an expression has more than one operator, it is important to know the order in which they will be applied. the hierarchy of operators precedence is given below.
C language has a predefined rule of priority for the operators. This rule of priority of operators is called operators precedence.
For example, the expression a=4+b*2 contains two operators, an addition and a multiplication. C compiler evaluates 4+b first, then multiply the result by 2, or it evaluates b*2 first, then adds 4 to the result?
Operators | Description | Associativity |
---|---|---|
++ -- | Post increment/post decrement operator | Left to right associativity |
++ -- | Pre-increment/pre-decrement operator | Right to left associativity |
+ - | Unary plus/minus operator | Right to left associativity |
! ~ | Logical NOT/bitwise NOT operator | Right to left associativity |
* | "Value at address" operator | Right to left associativity |
& | "Address of" operator | Right to left associativity |
sizeof | "Size of" operator | Right to left associativity |
* / % | Multiplication/division/modulus operator | Left to right associativity |
+ - | Addition/subtraction operator | Left to right associativity |
<< >> | Bitwise left shift/bitwise right shift operator | Left to right associativity |
< <= | "Less than"/"Less than or equal to" relational operator | Left to right associativity |
> >= | "Greater than"/"Greater than or equal to" relational operator | Left to right associativity |
== != | "Equal to"/"Not equal to" relational operator | Left to right associativity |
& | Bitwise AND operator | Left to right associativity |
^ | Bitwise XOR operator | Left to right associativity |
| | Bitwise OR operator | Left to right associativity |
&& | Logical AND operator | Left to right associativity |
|| | Logical OR operator | Left to right associativity |
?: | Ternary conditional operator | Right to left associativity |
= | Assignment operator | Right to left associativity |
+= -= | Assignment with addition/subtraction | Right to left associativity |
*= /= %/ | Assignment with multiplication/division/modulus | Right to left associativity |
<<= >>= | Assignment with bitwise left shift/bitwise right shift | Right to left associativity |
&= ^= |= | Assignment with bitwise AND/bitwise XOR/bitwise OR | Right to left associativity |
Value of a + b * c / d is : 25.000000 Value of (a + b) * c / d is : 22.500000 Value of a + (b * c) / d is : 25.000000 Value of a + b * (c / d) is : 25.000000