I would always expect that it works as described here: What is x after "x = x++"?
But when I tried to test it:
int x = 0;
x = x++;
printf("x = %d\n", x);
The result is not 0 as I would expect but 1. We tested it in VS2012 and g++ (version 4.7).
Note, that this code prints 0 as expected:
int x = 0;
int y = x++;
printf("y = %d\n", y);