(x+y)+z != x+(y+z); - correctly evaluates to false in C, the parentheses can safely be ignored because they are redundant and make no difference to the outcome.
I think the parent was assuming that x, y, z could be function calls with side effects.
x = x++; is basically undefined - How so?
x is modified twice in the expression without a sequence point. There are two ways code could be generated:
Set a temp variable to the value of x
Increment x
Assign the temp variable to x
or
Assign x to x
Increment x.
Both are legal. Actually, since the behaviour is formally "undefined behaviour", the compiler is free to generate code to do anything or nothing.