社区
C++ 语言
帖子详情
前自增和后自增的区别
anison
2007-10-23 10:25:12
我只简单地知道,前置是先自增再参加运算,而后置是先参加运算再自增.
书上说使用前置可以减少开销,我不太明白.大家帮忙指教一下.
书上举例:
int i=0,j;
j=++i;
j=i++;
建议使用前置操作,因为它需要做的工作更少,只需加1后返回加1后的结果即可.而后置操作符则必须先保存操作数原来的值,以便返回未加1之前的值作为操作的结果.
-------
对于j=i++不就是先吧i的值赋给j,完成这个操作后j已经被赋值,接着再把i的值自增1即可...感觉很顺啊..
...全文
796
11
打赏
收藏
前自增和后自增的区别
我只简单地知道,前置是先自增再参加运算,而后置是先参加运算再自增. 书上说使用前置可以减少开销,我不太明白.大家帮忙指教一下. 书上举例: int i=0,j; j=++i; j=i++; 建议使用前置操作,因为它需要做的工作更少,只需加1后返回加1后的结果即可.而后置操作符则必须先保存操作数原来的值,以便返回未加1之前的值作为操作的结果. ------- 对于j=i++不就是先吧i的值赋给j,完成这个操作后j已经被赋值,接着再把i的值自增1即可...感觉很顺啊..
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
anison
2007-10-28
打赏
举报
回复
我知道是什么问题了...
对于j=i++不就是先吧i的值赋给j,完成这个操作后j已经被赋值,接着再把i的值自增1即可...感觉很顺啊..
-------
但是j=i++中,根据运算符的优先级别,是先进行i++再进行赋值操作的...所以必须先保存i修改前的值
谢谢大家精彩的回答
harvy_chen
2007-10-23
打赏
举报
回复
通俗的说,++i 和 i++ 最后的值都一样,但是如果j = ++i 和 j = i++ j的值不一样。一个是++后返回,一个是++前返回。
tiantangniao232
2007-10-23
打赏
举报
回复
类似于:
operator ++( )//前置,this指向操作数的地址
{
*this = *this + 1;
return *this;
}
perator ++(int)//后置
{
temp = *this;
*this = *this + 1;
return temp;
}
olla168
2007-10-23
打赏
举报
回复
1
前置和后置在C++中实现是不一样的,前置是在对象上自加或者自减,之后返回这个对象,后置是先返回对象的一个拷贝,并且是以const的形式返回的,之后再将本对象自加自减。
yixiao386
2007-10-23
打赏
举报
回复
很清楚了啊
Seu_why
2007-10-23
打赏
举报
回复
http://topic.csdn.net/u/20071018/19/ce7378b9-ea91-4d8a-9d93-e55ed75f991e.html
lenux
2007-10-23
打赏
举报
回复
有道理,在前置和后置对代码影响相同的情况下要选择前置。
xiantongyuan
2007-10-23
打赏
举报
回复
书上不是说得很清楚吗,后++时,需要先保存原来的值, 而前++,不需要保存这个值,直接对原来的数据进行操作。
考虑一下for(int i = 0; i < 20; i++)和for(int i = 0; i < 20; ++i)的区别
HappyTree
2007-10-23
打赏
举报
回复
看六楼的实现代码就可以发现,后置比前置多定义了一个临时变量,因此效率要低些。
当然,语意也不一样。
但对于如下情形:
for(int i = 0; i < 20; i++)和for(int i = 0; i < 20; ++i)
因为i是内置类型,很难说有什么效率上的差别。
hiyoung
2007-10-23
打赏
举报
回复
c++ primer上好像有这种说法
con_con
2007-10-23
打赏
举报
回复
5楼,你说的那个实现是怎么得来的啊,分析得很底层啊
ID
自增
JAVA类方法
ID
自增
的java类方法,不用数据库主键
自增
的可以考虑试试这个,自己定义方式
JS基础语法(03)-
前
自增
与后
自增
区别
/*
前
自增
与后
自增
的异同点 相同点:无论是
前
自增
还是后
自增
,对于变量而言,没有
区别
,都是自身+1 不同点: *
前
自增
:先+1(变量自身+1),后赋值(将变量的值赋值给
自增
表达式的结果) * 后
自增
:先赋值,后+1 */ //1.
前
自增
var num1 = 10 var res1 = ++ num1//res1是
前
自增
...
前
自增
与后
自增
到底啥
区别
?
前
自增
操作:该操作使其操作数加1,操作结果是修改后的值。 后
自增
操作:同样对其操作数加 1(或减 1),但操作后产生操作数原来的、未修改的值作为表达式的结果。
前
置操作返回加1后的值,所以返回对象本身,这是左值。而后置操作返回的则是右值。
前
自增
: int i = 0, j; j = ++i; // j = 1, i = 1: prefix yields incre
前
自增
和后
自增
本文主要讲解
前
自增
和后
自增
的使用以及细节,另外
前
自减和后自减没在文章中详细介绍,但原理同
前
自增
和后
自增
。
前
置
自增
与后置
自增
的
区别
(++i,i++)
1. 表达式的值不同(这一点想必大多数人都记得) 即++i,i的值
自增
后,返回i
自增
后的值; i++,i的值
自增
,返回的却是i
自增
前
的值 内部具体操作可以看作是这样的 /**
前
置
自增
*/ { i = i+1; return i; } /** 后置
自增
*/ { int temp = i; i = i+1; return temp; } 如上所示,后置
自增
除了返回值与
前
置
自增
不同以外,还多了一个创建临时对象的步骤,这也就是为什么会有
前
置
自增
比后置自.
C++ 语言
65,180
社区成员
250,527
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章