社区
工具平台和程序库
帖子详情
i++和++i用在for循环语句中有什么区别?
iBuffer
2003-05-30 04:19:18
我最近看c++primer这本书里对vector、list、map进行遍历时的for循环有用++i的,在msdn中也时这么用的。可是我把++i改成i++后出来的结果是一样的。不知道在for循环中两者有什么区别?
...全文
1750
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)
### 教育领域2024浙江大学国际学生新生指南:入学准备、行政事务及校园生活指引
内容概要:该指南为即将在浙江大学杭州校区就读的国际学生提供了详细的入学准备、行政事务办理、信息资源获取、医疗与保险、校园生活等方面的指导。学前准备部分涵盖电话卡、银行卡、常用App下载等;行政事务涉及报到、体检、签证及居留许可办理;信息资源部分介绍了学校官方网站、教学管理平台等;医疗与保险章节明确了日常及紧急就诊流程和保险购买指南;校园生活则包含校园卡、校历、住宿、交通等方面的内容。; 适合人群:即将进入浙江大学杭州校区就读的国际学生及其家长或监护人。; 使用场景及目标:①帮助国际学生顺利办理入学前的各项准备工作;②指导学生完成报到、体检、签证及居留许可等行政事务;③提供信息资源获取途径,确保学生能充分利用学校资源;④明确日常医疗就诊和保险购买流程,保障学生的健康权益;⑤介绍校园生活设施和服务,帮助学生尽快适应新的学习生活环境。; 其他说明:此指南详细列出了各项事务的具体步骤和所需材料,强调了时间节点和注意事项,确保国际学生能够顺利完成入学准备并顺利融入浙江大学的学习和生活。建议新生仔细阅读并按照指南要求提前做好准备。
AB测试方案:Vue3+PostHog的功能实现.pdf
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Vue 3是一款备受瞩目的JavaScript框架,它采用了基于Proxy的响应式系统,显著提升了性能和调试能力。其Composition API带来了更高效的逻辑组织方式,使代码复用变得轻而易举。Tree-shaking支持让打包后的文件体积更小,进一步优化了应用性能。Vue 3还与TypeScript深度集成,提供了更完善的类型推导,让开发过程更加顺畅。无论是构建大型应用还是小型项目,Vue 3都能凭借其出色的性能和灵活的架构,帮助开发者高效完成任务,是现代Web开发的理想选择。
高频注入仿真与无感控制在PMSM中解决零速转矩输出问题的研究及MATLAB/Simulink实现
内容概要:本文探讨了插入式永磁同步电机(PMSM)在高频注入仿真和无感控制方面的最新进展。作者详细介绍了高频注入仿真技术在PMSM中的应用,通过MATLAB/Simulink平台进行仿真测试,解决了零速转矩输出问题。此外,还讨论了凸极效应对电机性能的影响,并展示了具体的实践案例和示例代码。文章强调了高频注入仿真和无感控制在提高电机稳定性、可靠性和效率方面的重要作用。 适合人群:从事电机控制系统研发的工程师和技术人员,尤其是对永磁同步电机感兴趣的专业人士。 使用场景及目标:适用于希望深入了解PMSM无感控制和高频注入仿真的研究人员和工程师。目标是提升对零速转矩输出问题的理解,掌握MATLAB/Simulink仿真工具的使用方法,以及探索凸极效应的实际应用。 其他说明:文中提供了详细的示例代码和仿真模型,帮助读者更好地理解和实践相关技术。
FreeRTOS-KEY调用挂起和恢复.zip
基于STM32F1系列FreeRTOS的移植使用 详细移植过程可以参考: FreeRTOS实战(二)章节:https://blog.csdn.net/manongdky/category_12968613.html?spm=1001.2014.3001.5482
云原生应用:Vue3+Kubernetes的部署方案.pdf
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Vue 3是一款备受瞩目的JavaScript框架,它采用了基于Proxy的响应式系统,显著提升了性能和调试能力。其Composition API带来了更高效的逻辑组织方式,使代码复用变得轻而易举。Tree-shaking支持让打包后的文件体积更小,进一步优化了应用性能。Vue 3还与TypeScript深度集成,提供了更完善的类型推导,让开发过程更加顺畅。无论是构建大型应用还是小型项目,Vue 3都能凭借其出色的性能和灵活的架构,帮助开发者高效完成任务,是现代Web开发的理想选择。
工具平台和程序库
24,861
社区成员
27,334
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章