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) 
lefttoright 
++
 +  ! ~ (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 
righttoleft 
* / % 
Multiplication/division/modulus 
lefttoright 
+  
Addition/subtraction 
lefttoright 
<< >> 
Bitwise shift left, Bitwise
shift right 
lefttoright 
< <= > >= 
Relational less than/less than
or equal to Relational greater than/greater
than or equal to 
lefttoright 
== != 
Relational is equal to/is not
equal to 
lefttoright 
& 
Bitwise AND 
lefttoright 
^ 
Bitwise exclusive OR 
lefttoright 
 
Bitwise inclusive OR 
lefttoright 
&& 
Logical AND 
lefttoright 
  
Logical OR 
lefttoright 
? : 
Ternary conditional 
righttoleft 
= += = *= /= %=
&= ^= = <<= >>= 
Assignment Addition/subtraction assignment Multiplication/division assignment Modulus/bitwise AND assignment Bitwise exclusive/inclusive OR assignment Bitwise shift left/right assignment 
righttoleft 
, 
Comma (separate
expressions) 
lefttoright 
 Note 1:
 Parentheses are also used
to group subexpressions to force a different precedence; such
parenthetical expressions can be nested and are evaluated from
inner to outer.
 Note 2:
 Postfix
increment/decrement have high precedence, but the actual
increment or decrement of the operand is delayed (to be
accomplished sometime before the statement completes execution).
So in the statement y = x * z++; the current value
of z is used to evaluate the
expression (i.e., z++
evaluates to z) and z only
incremented after all else is done. See postinc.c
for another example.
