Natknąłem się na dwie deklaracje wskazujące, które trudno mi zrozumieć. Moje rozumienie zasad pierwszeństwa wygląda mniej więcej tak:
Operator Precedence Associativity
(), [ ] 1 Left to Right
*, identifier 2 Right to Left
Data type 3
Ale nawet biorąc to pod uwagę, nie wydaje mi się, aby poprawnie ocenić następujące przykłady:
Pierwszy przykład
float * (* (*ptr)(int))(double **,char c)
Moja ocena:
*(ptr)(int)*(*ptr)(int)*(*(*ptr)(int))
Następnie,
double **char c
Drugi przykład
unsigned **( * (*ptr) [5] ) (char const *,int *)
*(ptr)[5]*(*ptr)[5]*(*(*ptr)[5])**(*(*ptr)[5])
Jak powinien ja je czytać?