What are Precedence and Associativity?
Precedence and Associativity are the rules that are used to determine the operators with the highest priority in evaluating an equation that contains different operations.
For example: x = 10 + 5 * 2;
In this example, x is assigned as 20, not 30 that’s because operator * has higher precedence than +, and hence it first gets multiplied (5*2), and then the result is added to 10.
Lists operator precedence and associativity in C
Operator | Meaning of operator | Associativity |
---|---|---|
() [] -> . | Functional call Array element reference Indirect member selection Direct member selection | Left to right |
! ~ + – ++ — & * sizeof (type) | Logical negation Bitwise(1 ‘s) complement Unary plus Unary minus Increment Decrement Dereference Operator(Address) Pointer reference Returns the size of an object Type cast(conversion) | Right to left |
* / % | Multiply Divide Remainder | Left to right |
+ – | Binary plus(Addition) Binary minus(subtraction) | Left to right |
<< >> | Left shift Right shift | Left to right |
< <= > >= | Less than Less than or equal Greater than Greater than or equal | Left to right |
== != | Equal to Not equal to | Left to right |
& | Bitwise AND | Left to right |
^ | Bitwise exclusive OR | Left to right |
| | Bitwise OR | Left to right |
&& | Logical AND | Left to right |
|| | Logical OR | Left to right |
?: | Conditional Operator | Right to left |
= *= /= %= -= &= ^= |= <<= >>= | Simple assignment Assign product Assign quotient Assign remainder Assign sum Assign difference Assign bitwise AND Assign bitwise XOR Assign bitwise OR Assign left shift Assign right shift | Right to left |
, | Separator of expressions | Left to right |