This post demonstrates the list of operators available and their precedence with associativity in C.
Please share your thoughts on this post in the comments section.
What is Operator Precedence?
Operator precedence determines how operators are grouped, when different operators appear close by in one expression. For example, '*' has higher precedence than '+'. Thus, the expression a+b*c means to multiply b and c, and then add a to the product (i.e., a+(b*c)). You can overrule the precedence of the operators by using parenthesis. For example, consider the expression a+b*c, you want to first add and then multiply. In this case, write the expression as (a+b)*c.
What is Associativity?
If two operators has the same precedence, then associativity tells you in which direction the expression will be carried out by grouping operators. For example, '+' and '-' have the same precedence. Thus the expression a+b-c means to add a and b, and then subtract c from the addition (i.e., (a+b)-c). The expression is carried out from left to right direction.
Precedence - How operators are grouped in an expression. Associativity - In what order operators of equal precedence are grouped in an expression.
List of C operators in order of precedence (highest to lowest) -
Operator
|
Description |
Associativity
|
---|---|---|
( ) [ ] . -> ++ -- | Parentheses (function call) (see Note 1) Brackets (array subscript) Member selection via object name Member selection via pointer Postfix increment/decrement (see Note 2) | left-to-right |
++ -- + - ! ~ (type) * & sizeof | Prefix increment/decrement Unary plus/minus Logical negation/bitwise complement Cast (convert value to temporary value of type) Dereference Address (of operand) Determine size in bytes on this implementation | right-to-left |
* / % | Multiplication/division/modulus | left-to-right |
+ - | Addition/subtraction | left-to-right |
<> | Bitwise shift left, Bitwise shift right | left-to-right |
< >= | Relational less than/less than or equal to Relational greater than/greater than or equal to | left-to-right |
== != | Relational is equal to/is not equal to | left-to-right |
& | Bitwise AND | left-to-right |
^ | Bitwise exclusive OR | left-to-right |
| | Bitwise inclusive OR | left-to-right |
&& | Logical AND | left-to-right |
| | | Logical OR | left-to-right |
? : | 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 | right-to-left |
,
|
Comma (separate expressions) | left-to-right |
|
Please share your thoughts on this post in the comments section.
0 comments:
Post a Comment