I was tinkering with C++ pointer arithmetic and some weird stuff started happening.
int myint[] = {1,2,3,4};
int * pmyint = myint;
pmyint = &myint[0];
cout << *(pmyint) << " " << *(pmyint+1) << " " << *(pmyint+2) << " "<< *(pmyint+3) << endl;
cout << *(pmyint++) << " " << *(pmyint++) << " " << *(pmyint++) << " "<< *(pmyint) << endl;
The output for that peice of code is:
1 2 3 4
3 2 1 4
I'm not sure why the second line isn't matching up with the first...