It is about lvalue (left value). Lvalue is, what on the left side of an "=" stay can. Also, to what you can give a value. For example, you can't give a value to "4", but you can to give a value to "i". The expressions of variables aren't just so lvalues (with the exception of some very esoteric programming language).
If you write "++i++", it will be interpreted as (++i)++ or ++(i++). "i" is an lvalue, but "i++" or "++i" not, because they are expressions.
In C++, with some tricky operator overloading and reference-variable tricks, the C++ compiler could be tricked to handle this correctly.