在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]
相关文章推荐
- 在C++中,为什么前自增操作生成左值,后自增操作生成右值?为什么有这样的区别? .
- C++ - 左值(lvalue)引用和右值(rvalue)引用 的 区别
- 说说C语言与C++的有些区别(一)----为什么C语言没有BOOL类型,而C++有;枚举类型的区别;左值
- C++ - 左值(lvalue)引用和右值(rvalue)引用 的 区别
- C标准和C++ 标准对左值/右值的区别
- c++中的左值与右值的区别
- c++中左值与右值的区别
- C++ 0x 之左值与右值、右值引用、移动语义、传导模板
- c++左值与右值的含义与误区
- c++中有struct为什么还要引入class,c中的struct和c++中的struct的区别
- c++中的左值与右值
- C++左值与右值之间共同与不同点解析
- C/C++中,为什么字符串可以赋值给字符指针变量,单引号和双引号的区别
- C/C++数组为什么不支持整体赋值操作
- C/C++为什么总喜欢用u16 u8 这样的声明类型啊
- c++ 左值、右值、右值引用、左值引用
- C语言左值与右值的区别(C语言深度剖析读书笔记一)
- C++ 引用 左值引用 右值引用
- C++ 左值、右值、右值引用
- 自增自减操作符在C与C++中的左值区别