Why is ++x a lvalue and x++ a rvalue? [duplicate]

++x returns a reference to the object you incremented, where as x++ returns a temporary copy of x‘s old value.

At least this would be the “normal” way by to implement these operators by convention. And all built-in types work this way. And if you’ve read about lvalues / rvalues then you would see that since the prefix operator returns the named object itself it would be an lvalue, where as the postfix operator returns a copy of a local temporary, which would then qualify as an rvalue.

Note: Also, we have prvalues, xvalues and such now, so it’s technically a bit more complicated these days. Look here for more info.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)