Expressions combine operands and operators according to precedence and associativity.
1Precedence (high → low)
Postfix (), [], ->, ++ --
Unary ! ~ ++ -- + - * & sizeof, casts
* / %
+ -
<< >>
< <= > >=
== !=
& then ^ then |
&& then ||
?:
Assignment = += -= …
Comma
2Undefined behaviour
Modifying a variable twice without a sequence point (i = i++ + ++i) is undefined: there is no single correct output