x = x++;
You are assigning the value to the variable and then incrementing it and so it is 10
y = ++y;
You are incrementing the value and then assigning it and so its one more than the original value.
x=y++ + x++;
y= ++y + ++x;
For this try evaluating from Right to left because C is normally Right To Left evaluated and almost all the compilers follow that but as DaWei said you are at the mercy of the compiler to give you results.