为什么预增量运算符在C中给出rvalue?

Hap*_*tal 28 c c++ rvalue lvalue

在C++中,预增量运算符给出左值,因为返回了递增的对象本身,而不是副本.但在C中,它给出了右值.为什么?

Pra*_*rav 16

C没有参考.在C++中++i返回对i(lvalue)的引用,而在C中它返回一个副本(递增).

C99 6.5.3.1/2

pre fi x ++运算符的操作数的值递增.结果是增量后操作数的新值.表达式++ Eis等价于(E + = 1).

‘‘value of an expression’’ <=> rvalue

但是由于历史原因,我认为"引用不属于C"可能是一个可能的原因.