How do Pointer Arithmetic works after Pointer Casting? : 
int main() {


      
    	short int a[4] = {1,1, [3] = 1};
        int *p = (int*)a;
        
    	printf("p: %p  %d \n ", p, *p);
        printf("p+1: %p %d\n", (p +1), *(p+1));



}


  

why does *p = 65537 and *(p+1) = 65536?