在C++中,为什么前自增操作生成左值,后自增操作生成右值?为什么有这样的区别?

来源:互联网 发布:已备案域名更换服务器 编辑:程序博客网 时间:2024/05/16 08:02

 

左值意味着这个值是内存里一个可访问的地址,右值表示一个数据(可能没有确切的地址)
比如说 ++i 先将 i 所存放的数加一,再返回i,即&(++i)是有意义的,可以作为一个左值,而 i++ 将 i的值加一,并且返回没有增加前的i,这个时候这个(i++)是一个数字,没有固定的存放地址,所以只能作为右值了.
所以:
(a++)+=a;表达式错误。
上式等价于:a++ = a + a;
(++a)+=a;表达式正确。
上式等价于:++a = a + a;

 

原创粉丝点击