a[i] = i++ is undefined, even though a[i] = i and a[j] = i++ each do what they obviously should.
And I would never excrete such a line of code without automatically thinking "hmmm.. does this really do what I think it does?"
This is an undefined operation in almost all programming languages.
There is no intrinsic reason why a[i] = i++ has to result in undefined behavior.