Same code and different result, Why?



Code:
#include <stdio.h>
int main()
{
int x = 36, y = 20;
x = x++ + y++;
y = ++x + ++y;
printf("x value is %d, y value is %d \n",x,y);
return 1;
}

I compile this code in different compilor with different CPU.
In x86 I get : x value is 58, y value is 80, while in other two processors,
the result is "x value is 57, y value is 79".

Is this realated with compilor or CPU achitechure? Why?

Thanks.
.