首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

(a++)+=2;有关问题

2012-09-14 
(a++)+2问题(a++)+2为什么不对?[解决办法]a++;后置递增操作符返回的是临时变量,递加后不改变自身的值。

(a++)+=2;问题
(a++)+=2;
为什么不对?

[解决办法]
a++;后置递增操作符返回的是临时变量,递加后不改变自身的值。所以调用(++a)+=2;后a的值不变
改为(++a)+=2;即可。
[解决办法]
为什么不能作为左值,但是没有一个人把原因说出来!
因为a++本质上是一个操作符函数调用,所以a++其实相当于是返回了一个临时变量,这个临时变量在
int b = a++;
这条语句之后就变会被析构,原因是以后的语句都不可能再访问到这块内存,编译器对于不能再访问到的内存会及时做析构操作。
但并非所有的函数返回值都不能作为左值,有些返回值是可以作为左值的,只有返回的临时变量不能作为左值。
下面这个函数
int& GetMyNum()
{
static int nMyNum = 0;
return nMyNum;
}
GetMyNum() += 2;
这条语句编译绝对正确;

热点排行