can somebody explain why this works ?Code:main() { int a[] = { 2,4,6,8,10 }; int I = 0; printf("%d ",I[a]); printf("%d ",0[a]); printf("%d ",1[a]); printf("%d ",2[a]); printf("%d ",3[a]); }
can somebody explain why this works ?Code:main() { int a[] = { 2,4,6,8,10 }; int I = 0; printf("%d ",I[a]); printf("%d ",0[a]); printf("%d ",1[a]); printf("%d ",2[a]); printf("%d ",3[a]); }
Because statement
is equivalent toCode:printf("%d ",1[a]);
& is valid statement in CCode:printf("%d ",a[1]);
ANSI C defines a[i] as *((a) + (i)). So there's really no difference in which one comes first, pointer or index.