++i considered an lvalue and
i++ an rvalue?
I found the answer to this question on stackoverflow , but my terrible English does not allow me to understand it competently. After all, the priority of prefix and postfix
++ is still higher than
& , and in theory, in any case, it will be
++ first, and only then
& , or am I not understanding at all?
Perhaps this is a very incomplete answer compared to the expanded first one in the link, but the gist is this:
The postfix operator changes a value and returns only a temporary copy of that value, which, as a result, cannot be changed. That is, this copy is separate from the
i value itself, and can be used in an expression, but the assignment to
i++ does not make sense, because the result of
i++ is stored in some other memory location, not in the one where
i is located.
The result of
++i is written to it, so the expression
++i = ... makes sense (l-value).