社区
工具平台和程序库
帖子详情
i++和++i用在for循环语句中有什么区别?
iBuffer
2003-05-30 04:19:18
我最近看c++primer这本书里对vector、list、map进行遍历时的for循环有用++i的,在msdn中也时这么用的。可是我把++i改成i++后出来的结果是一样的。不知道在for循环中两者有什么区别?
...全文
1826
22
打赏
收藏
i++和++i用在for循环语句中有什么区别?
我最近看c++primer这本书里对vector、list、map进行遍历时的for循环有用++i的,在msdn中也时这么用的。可是我把++i改成i++后出来的结果是一样的。不知道在for循环中两者有什么区别?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
22 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ch_builder
2003-05-31
打赏
举报
回复
楼上兄弟们说得都很对,++i与i++谁在前第一次用时就先返回谁,而且两者在同一个程序中,i++的值总会比++i的值小1。
gzqreder
2003-05-31
打赏
举报
回复
哪个在前面就返回哪个
++i返回i+1,i++返回i
robertnet
2003-05-31
打赏
举报
回复
++i 与 i++ 不存在效率问题,关键看你怎么用。
DanielWYO
2003-05-31
打赏
举报
回复
++i 效率是会高一点的.
另外, B.S的经验谈也是认为尽量不要使用i++
iBuffer
2003-05-31
打赏
举报
回复
多谢大家,没想到这俩个东东有这么多说道。
senkiner
2003-05-31
打赏
举报
回复
看这两个代码有和区别:
//1:
for(i=0;i<5;i++)
{
cout << i << endl;
}
cout << "--------\n" << i << endl;
//2:
for(i=0;i<5;++i)
{
cout << i << endl;
}
cout << "--------\n" << i << endl;
hydra1101
2003-05-30
打赏
举报
回复
另外如果i是一个类的话,++i也许效率会高一些,我们公司的技术主管对这件事指出来过,不过他说的是我们自己的类库,对++i做了优化,他告诉我,没有特殊的情况,用++i而不是i++。
Cypher
2003-05-30
打赏
举报
回复
楼上有人说对了,也有人说错了,这两个用在for循环中效果是相同的,效率取决于i的类型,如果是int等内置类型,没什么错误,但对于用户自定义类型重载的++如最常见的iterator则++i效率要高一些。
hydra1101
2003-05-30
打赏
举报
回复
for中几乎没有区别,因为它的执行顺序for(partA;partB;partC)
首先partA
然后每次循环之前先partB
循环之后partC
区别在于partC可能是多条语句,例如:for(int i=0;i<10;++i,a=i)---〉这种写法不规范,所以也没有必要知道啦
wanchl
2003-05-30
打赏
举报
回复
++i是先加1再参加运算,而i++是先运算再加1
xzygod
2003-05-30
打赏
举报
回复
运算中i++比++i多产生一个临时对象,从效率的角度说,应用++i代替i++
egyptnile
2003-05-30
打赏
举报
回复
no difference
georgepcb
2003-05-30
打赏
举报
回复
对于for循环,++i和i++没有区别。
xuanyuanhaobo
2003-05-30
打赏
举报
回复
在for的第三项里面无区别~~
for (int i = 0; i < n; i++)
{
...
}
与
for (int i = 0; i < n; ++i)
{
...
}
与
for (int i = 0; i < n;)
{
...
i++;(++i)_
}
无区别
hyifeng
2003-05-30
打赏
举报
回复
如果你用的是支持随机存储的容器如vector,string...
++iterator应该和iterator++是没有区别的,
因为通常迭代器简单实现为普通指针。
但是,如list,map,set等容器,iterator就没有这么简单了,
++iterator效率高于iterator++,因为省了一个临时对象。
Eagle_118
2003-05-30
打赏
举报
回复
++i和i++在for循环中的区别是++i比i++的运算在一般情况下要快一点。
如果你重载过这两个运算符,这不难理解为什么!
skywarship
2003-05-30
打赏
举报
回复
++i和i++本身是有区别的,但如果用在for语句中就不存在任何区别了
for(...;...;i++/++i)
{...}
相当于
while(...)
{i++/++i;}
black_fox
2003-05-30
打赏
举报
回复
不好意思。我说的无区别是指在他用的例子中无区别,并不是说++i和i++这两种操作无区别。大家别拍我
black_fox
2003-05-30
打赏
举报
回复
无区别,但是可能效率会不一样。实现可能如此:
class CTemp
{
public:
CTemp():i(0)
{
}
CTemp operator ++ (int) //i++调用这个
{
CTemp tmp(*this);
i++;
return tmp;
}
CTemp & operator ++() //++i调用这个
{
i++;
return *this;
}
// operator int const (){ return i; }
virtual ShowInfo()
{
CString strMsg;
strMsg.Format("i = %d",i);
AfxMessageBox(strMsg);
}
protected:
int i ;
private:
};
实际上++i可能比i++要块一点,当然,编译器不知道会不会做这种优化。
xueyanchao
2003-05-30
打赏
举报
回复
i++和++i的区别是这样的
#include <iostream.h>
void main()
{
int i=3,j=3;
cout<<++i; //OUT: 4
cout<<j++; //OUT: 3
cout<<i; //OUT: 4;
cout<<j; //OUT: 4;
}
明白了吗?
加载更多回复(2)
基于微信小程序平台开发的集家庭日常收支精细化记录多成员协同管理与智能财务分析于一体的云端家庭财务管理系统_微信小程序开发前端界面设计后端数据逻辑处理云数据库存储用户权限管.zip
基于微信小程序平台开发的集家庭日常收支精细化记录多成员协同管理与智能财务分析于一体的云端家庭财务管理系统_微信小程序开发前端界面设计后端数据逻辑处理云数据库存储用户权限管.zip
CursorSetup-x64-2.1.47.exe
CursorSetup-x64-2.1.47.exe
动态覆盖的分布式策略,具有有限感知能力.zip
1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
(55页PPT)智慧农业行业解决方案.pptx
(55页PPT)智慧农业行业解决方案.pptx
基于双目标 UCB 控制启发式算法的主动磁悬浮轴承 PID 隐式模型优化方法-基准函数测试(Matlab代码实现)
内容概要:本文提出了一种基于双目标UCB控制启发式算法的主动磁悬浮轴承PID隐式模型优化方法,并通过基准函数测试验证其有效性。该方法结合了多目标优化与启发式搜索策略,旨在提升主动磁悬浮轴承控制系统中PID参数整定的精度与稳定性,利用Matlab进行仿真代码实现,展示了在基于双目标 UCB 控制启发式算法的主动磁悬浮轴承 PID 隐式模型优化方法——基准函数测试(Matlab代码实现)复杂非线性系统建模与优化方面的应用潜力。; 适合人群:具备一定控制理论基础和Matlab编程能力的高校研究生、科研人员及从事自动化、机械电子工程等领域研发工作的技术人员。; 使用场景及目标:①用于主动磁悬浮轴承系统的高性能控制设计;②为PID控制器参数优化提供基于双目标UCB启发式算法的新思路;③适用于需要高精度、强鲁棒性控制的工业场景,如高速旋转机械、精密制造装备等。; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注双目标优化机制与UCB启发式策略的融合方式,并可通过替换不同基准函数进行扩展实验,进一步掌握其在实际控制系统优化中的调参技巧与适应性分析方法。
工具平台和程序库
24,856
社区成员
27,329
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章