C++ Operator Precedence
- ::
- a++ a-- a() a[] a. a->
- ++a --a +a -a !a ~a *a &a sizeof new delete
- .* ->*
- a*b a/b a%b
- a+b a-b
- a >> 1 a << 1
- <=> (Three-way comparision)
- < <= > >=
- == !=
- a & b
- a ^ b
- a | b
- a && b
- a || b
- a ? b : c throw = += -= *= /= %= <<= >>= &= ^= |=
Common Mistakes
Typos | Fixes |
---|---|
if (a & b == 0) | => if ((a & b) == 0) |
if (a >> 2 + b > c) | => if ((a >> 2) + b > c) |
*a.size() | => (*a).size() |
C Pointers Declarations
Function call (e.g. f()) and array (e.g. a[]) has equal precedence, and both of them have higher precedence than reference (e.g. &a) and dereference (e.g. *a) operator.
See line 2 and line 5 below.
Declaration | Meaning |
---|---|
int *p | a pointer to int |
int *p[13] | an array[13] of pointer to int |
int *(p[13]) | an array[13] of pointer to int |
int **p | a pointer to a pointer to an int |
int (*p)[13] | a pointer to an array[13] of int |
int *f() | a function returning a pointer to int |
int (*f)() | a pointer to a function returning int |
int (*(*f())[13])() | a function returning ptr to an array[13] of pointers to functions returning int |
int (*(*x[3])())[5] | an array[3] of pointers to functions returning pointers to array[5] of ints |