您的位置:首页 > 编程语言 > C语言/C++

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

2010-06-04 20:45 435 查看
左值意味着这个值是内存里一个可访问的地址,右值表示一个数据(可能没有确切的地址)

比如说 ++i 先将 i 所存放的数加一,再返回i,即&(++i)是有意义的,可以作为一个左值,
而 i++ 将 i的值加一,并且返回没有增加前的i,这个时候这个(i++)是一个数字,没有固定的存放地址,所以只能作为右值了.

所以:

(a++)+=a;表达式错误。

上式等价于:a++ = a + a;

(++a)+=a;表达式正确。

[code]上式等价于:++a = a + a;

[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: