将变量分配给预增量变量和后增量变量?

时间:2015-10-31 15:22:05

标签: c++

以下两项作业之间的区别是什么?

#include<iostream>

using namespace std;
int main(){
    int a=10,i=0;
    ++i = a //COMPILES WITHOUT ERROR
    i++ = a //GIVES AN ERROR LVALUE NEEDED
}

为什么第二次分配会产生错误?

2 个答案:

答案 0 :(得分:4)

++i在递增后返回i的新值。该值为左值,在这种情况下称为i。当然允许修改i

但是i++在递增之前返回i的旧值。该值是 rvalue ,即未命名的临时值。在C ++中不允许修改rvalue。

答案 1 :(得分:0)

预增量操作返回其参数(i)已增加1。返回的东西是变量,你可以分配给它。

后增量会返回旧值i - rvalue ,无法分配给它。

有关C ++中operator++的实现,请参阅this question