|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
C++论坛
→
『 C++教室 』
→ [讨论][求助]关于后置自增操作符的问题
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1616
人关注过本帖
标题:
[讨论][求助]关于后置自增操作符的问题
取消只看楼主
加入收藏
panxiang88
等 级:
新手上路
帖 子:33
专家分:0
注 册:2007-7-21
楼主
收藏
问题点数:0 回复次数:2
[讨论][求助]关于后置自增操作符的问题
int i = 5;
i = 6*(i++);
我理解是这样的:i自增后为6,i++返回5,并且6*5被赋给i,覆盖原值,那么i应该为30,为什么我在vc++上执行后是31?
搜索更多相关主题的帖子:
操作符
后置
原值
2007-08-01 14:15
举报帖子
使用道具
赠送鲜花
panxiang88
等 级:
新手上路
帖 子:33
专家分:0
注 册:2007-7-21
第
2
楼
收藏
得分:0
我看书上说后置++的工作原理是先将i原值保存,然后执行++i,此时i为6,最后再返回i的原值,即5,此时的5是个右值。这时候(i++)已经执行完了,接着再执行*和=,即将30赋给i,i被赋值前是6.
同样,++(i++),应该不能通过编译吧?因为i++返回的是右值
这是我理解的,你觉着呢?
2007-08-01 15:03
举报帖子
使用道具
赠送鲜花
panxiang88
等 级:
新手上路
帖 子:33
专家分:0
注 册:2007-7-21
第
3
楼
收藏
得分:0
++i++是右结合,所以++i++就是++(i++),而i++返回一个右值,就是const类型的临时变量,是不能修改的,此时若++这个const临时变量是不能编译通过的。
而(++i)++就不一样了,++i返回的就是加过一后的i,就是说返回的是变量,此时再++是可以的;
总之,关键点就是i++执行后,返回的不是i!而是一个const,这个const再参与后面的运算;而++i返回的就是改变后的自身。
2007-08-01 20:51
举报帖子
使用道具
赠送鲜花
3
1/1页
1
快速回复:
[讨论][求助]关于后置自增操作符的问题
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.053184 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved