Precedence | Operator | Description | Associativity | | |
---|
1 | ++ -- | Suffix/postfix increment and decrement | Left-to-right | | |
| () | Function call | | | |
| [] | Array subscripting | | | |
| . | Structure and union member access | | | |
| -> | Structure and union member access through pointer | | | |
| (<type>){<list>} | Compound literal (C99) | | | |
2 | ++ -- | Prefix increment and decrement | Right-to-left | | |
| + - | Unary plus and minus | | | |
| ! ~ | Logical NOT and bitwise NOT | | | |
| (<type>) | Cast | | | |
| * | Indirection (dereference) | | | |
| & | Address-of | | | |
| sizeof | Size-of | | | |
| _Alignof | Alignment requirement (C11) | | | |
3 | * / % | Multiplication, division, and remainder | Left-to-right | | |
4 | + - | Addition and subtraction | Left-to-right | | |
5 | << >> | Bitwise left shift and right shift | Left-to-right | | |
6 | < <= | For relational operators < and ≤ | Left-to-right | | |
| > >= | For relational operators > and ≥ | | | |
7 | == != | For relational = and ≠ | Left-to-right | | |
8 | & | Bitwise AND | Left-to-right | | |
9 | ^ | Bitwise XOR (exclusive or) | Left-to-right | | |
10 | | | Bitwise OR (inclusive or) | Left-to-right | | |
11 | && | Logical AND | Left-to-right | | |
12 | || | Logical OR | Left-to-right | | |
13 | ?: | Ternary conditional | Right-to-left | | |
14 | = | Simple assignment | Right-to-left | | |
| += -= | Assignment by sum and difference | | | |
| *= /= %= | Assignment by product, quotient, and remainder | | | |
| <<= >>= | Assignment by bitwise left shift and right shift | | | |
| &= ^= |= | Assignment by bitwise AND, XOR, and OR | | | |
15 | , | Comma | Left-to-right | | |