为什么++i比i++更优更快

 

转载自https://www.omegaxyz.com/2017/05/20/aboutippandppi/

递增(++)和递减(–-)运算符为对象的加1和减1操作提供了简洁的书写形式。除此之外,这两个运算符还可以用于迭代器,因为很多迭代器本身不支持算术运算,所以此时递增和递减除了简介外还是必需的。

       递增和递减运算符有两种形式:前置形式和后置形式,分别对应++i和i++。运算符的前置形式是将对象加1(或减1),然后将求值后的对象作为结果,而后置形式也是将对象加1(或减1),但是求值结果是对象未作出运算的值的副本。

   int i=0,j;

   j=++i;                    //   i=1,j=1

   j=i++;                   //    i=1 , j=0

这两种运算必需作用于左值运算对象,前置形式将运算对象本身作为左值返回,后置形式将运算对象的副本作为右值返回。

       在写代码中,如非必需,尽量避免后置形式,因为:前置形式避免了不必要的工作,它把值加1(或减1)后直接返回改变了的运算对象,而后置形式需要将原始值存储下来,以便返回这个未修改的原始值。如果我们不需要未修改的原始值时,那么后置形式的写法就是一种浪费。

      对于正数和指针类型来说,编译器可能对这种额外的工作进行了一定的优化,但是对于相对复杂的迭代器来说,这种额外的工作就消耗巨大了。所以养成前置形式的好习惯,不仅不需要担心性能问题,而且写出的代码也符合编程的初衷。

posted @   泥烟  阅读(271)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示