Operator precedence in C
OperatorDescriptionAssociativity
()
Parentheses (grouping)
[]
.
->
Brackets (array subscript)
ember selection via object name
Member selection via pointer left-to-right
++ --
Unary preincrement/predecrement
+ -
! ~
(type)
*
&
sizeof
Unary plus/minus
Unary logical negation/bitwise complement
Unary cast (change type)
Dereference
Address
Determine size in bytes 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 (XOR) 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