Consider the following code:
#include int main(void) { int a[10]; printf(\"%d\",(int)sizeof(a)); //prints 10*sizeof(int) (40 on
(a-3) has type int*, and it prints you sizeof(int*) which is 4 on your platform.
(a-3)
int*
sizeof(int*)
And note that sizeof() is no longer compile-time constant in C99 (due to variadic-length arrays).
sizeof()