在标准C++中,++i可以作为左值,i++不能作为左值。
1.++i相当于i自身增1,然后返回i的引用,i是普通变量,所有可以作为左值。
++i实现
i = i + 1;
return i;
2.i++相当于将i赋值给编译器产生的临时变量,然后i自身增1,返回临时变量。由于临时变量不能作为左值,故i++不能为左值。
i++实现
int temp;
temp = i;
i = i + 1;
return temp;
另外,在gcc当中,无论是i++还是++i都不能作为左值,编译通不过。