When I compile this code with gcc and run
The assignment operator is not a sequence point. Assuming
a is just an identifier (e.g. not a macro argument that might expand to something more complicated) and does not have an atomic type (C11),
a=a+1 is identical in semantics to
I wanted to mark this question as a duplicate of one of the hundreds of
++ operator sequence-point questions, but it seems your question is about why this form isn't different.