I assume you're imagining it as being equivalent
to i = j + i + 1, with a redundant store operation.
It's what the language standard specifies, not imagination. C and C++ state that
modifying twice between sequence points or using the value other than to compute the value
for a store is undefined behavior.
The languages put no constraint on what may happen when you do this.