Precedência entre operadores em C

Na tabela abaixo, os operadores estão em ordem decrescente de prioridade: os operadores da primeira linha são executados em primeiro lugar e os operadores da última são executados por último.

Os operadores da segunda linha são unários (um só operando); todos os demais são binários (dois operandos).  A coluna direita indica a regra de associação para os operadores da linha:  e-d significa da esquerda para a direitad-e  significa da direita para a esquerda.

()  []  ->  . e-d
- ++ -- ! & * ~ (type) sizeof d-e
*  /  % e-d
+  - e-d
<<  >> e-d
<  <=  >=  > e-d
==  != e-d
& e-d
^ e-d
| e-d
&& e-d
|| e-d
? : d-e
op= d-e
, e-d

Exemplos:

expressão interpretação
&x[i] &(x[i])
*p.dia *(p.dia)
a[i].b[j] ((a[i]).b)[j]
h->e->d (h->e)->d
&h->e &(h->e)
*x++ *(x++)