Except for the second one, both 1 and 3 that you've given have undefined behavior. What this means that you cannot predict what the output would be and may vary on different compilers.
This is because the same variable is being modified twice between 2 sequence points. For more details, search the net for "C sequence points"