以下两项作业之间的区别是什么?
#include<iostream>
using namespace std;
int main(){
int a=10,i=0;
++i = a //COMPILES WITHOUT ERROR
i++ = a //GIVES AN ERROR LVALUE NEEDED
}
为什么第二次分配会产生错误?
答案 0 :(得分:4)
++i
在递增后返回i
的新值。该值为左值,在这种情况下称为i
。当然允许修改i
。
但是i++
在递增之前返回i
的旧值。该值是 rvalue ,即未命名的临时值。在C ++中不允许修改rvalue。
答案 1 :(得分:0)
预增量操作返回其参数(i
)已增加1。返回的东西是变量,你可以分配给它。
后增量会返回旧值i
- rvalue ,无法分配给它。
有关C ++中operator++
的实现,请参阅this question。