想请教一下为什么i++不能作为左值?

papaofdoudou
人工智能领域新星创作者
博客专家认证
2008-11-18 08:39:43
想请教一下为什么i++不能作为左值?而++i可以作为左值,两种写法感觉上没有多大差异阿?
...全文
218 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
maying_11 2008-11-18
  • 打赏
  • 举报
回复
学习
就呆在云上 2008-11-18
  • 打赏
  • 举报
回复
	int i = 0;
i++ = 10;

具体应该分解为:

i = 0;这个时候i离开了0值,但是写入值的地方仅有一个文字常量
0 = 10; 当然不行
i=i+1;
toadzw 2008-11-18
  • 打赏
  • 举报
回复
I++的内部实现与++I不同,前者要一个临时变量保存当前值,而后者是只直接完成自身的加加,如果二者都可以作

为左值易混乱:如i++++; 其他;
bfhtian 2008-11-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qqwx_1986 的回复:]
i++ 返回的是系统自动生成的临时变量
如果作为左值你想想看是给i还是给i的临时变量赋值
++i就是直接用的i了
[/Quote]
up,写过自加的重载函数或是查看运行过程,应该会明白
P_ghost 2008-11-18
  • 打赏
  • 举报
回复
差异大着呢,空间差异,效率差异,表达式值差异!
帅得不敢出门 2008-11-18
  • 打赏
  • 举报
回复
i++
伪代码

..........
{
tmp = i;
i+=1;
return tmp;
}

返回的是一个临时对象
Longinc 2008-11-18
  • 打赏
  • 举报
回复
UP
chenzhp 2008-11-18
  • 打赏
  • 举报
回复
i++ 存在着一个临时变量
lostbyte2006 2008-11-18
  • 打赏
  • 举报
回复
ls正解。
i++后i的值是改变了,但表达式(i++)的结果是一个临时变量。
而++i改变的是i的值,使用的就是i。
qqwx_1986 2008-11-18
  • 打赏
  • 举报
回复
i++ 返回的是系统自动生成的临时变量
如果作为左值你想想看是给i还是给i的临时变量赋值
++i就是直接用的i了

64,637

社区成员

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

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