C++ 自增 左值 右值

luobochaoren 2010-03-31 10:34:48
在C++中,为什么前自增操作生成左值,后自增操作生成右值?为什么有这样的区别?
...全文
751 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
GoForSky 2010-03-31
  • 打赏
  • 举报
回复
为什么前自增操作生成左值,后自增操作生成右值?

前自增 的实现是:返回的是自己的引用,就是对象自己,可以被赋值
后自增 的实现是:返回一个自己类型的临时变量,这个临时变量一般来说是右值,不能修改


关于函数返回的临时对象可否修改的问题:
C++标准中定义了一个概念数值类型(scalar type),可以囊括整数、浮点数、枚举、指针类型。

1: 如果是数值类型,就不能修改
2: 如果是用户自定义类型,可以被修改,称为可修改的右值。


GrayMole2010 2010-03-31
  • 打赏
  • 举报
回复
前自增操作返回的对象本身,后自增操作返回的是一个临时变量。
前自增操作先对对象本身操作,然后返回对象本身,一般返回引用;
后自增操作一般用一个临时变量保存对象,然后对对象操作,返回临时变量,
一般返回对象(不是引用,不能返回临时变量的引用)。



耍宝王 2010-03-31
  • 打赏
  • 举报
回复
前自增返回的就是自增后的“自己”,而后自增返回的是自增前“自己的副本(临时变量)”
L2740611032 2010-03-31
  • 打赏
  • 举报
回复
前自增表示在用这个变量前,这个变量就加“+1”了,后自增就表示变量在用后才“+1”.
例如
int i=1;
++i ;//此时i 就是等于2了;如果此时是i++时,i就等于‘1‘,当运行到下条语句是i就是’2‘了。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧