I am running this C program:
#include<stdio.h>
void print(int* a, int* b, int* c, int* d, int* e)
{
    printf("%d %d %d %d %d\n", *a, *b, *c, *d, *e);
}
int main()
{
    static int a[] = {97, 98, 99, 100, 101, 102};
    int* ptr = a + 1;
    print(++ptr, ptr--, ptr, ptr++, ++ptr);
    ptr = a+ 1;
    printf("%d %d %d %d %d\n", *++ptr, *ptr--, *ptr, *ptr++, *++ptr);
    int i = 0;
    printf("%d %d %d", i++, ++i, ++i);
}
One compiler prints this as the output:
99 99 98 98 100
99 99 98 98 100
0 2 3
Another compiler prints this:
100 100 100 99 100
100 100 100 99 99
2 3 3
Now, I am confused what is happening. What is the correct order?
 
    