In C++17, after i = i++ ; the value of i would be 1.
(The value computation and side effect of the right hand side of the assignment is sequenced before the value computation and side effect of the left hand side of the assignment)
Prior to C++17, i = i++ ; would engender undefined behaviour.
(Side effects of the right hand side of the assignment and the left hand side of the assignment are unsequenced.)