i++和++i哪个效率高

摘自:https://blog.csdn.net/qq_38570571/article/details/81255717

只有在必要时才使用后置操作符
因为前置操作需要做的工作更少,只需要加1后返回加1后的结果即可。而后置操作符则必须先保存操作数原来的值,以便返回未加1之前的值作为操作的结果。对于int对象和指针,编译器可优化掉这项额外工作。但是对于更多的复杂迭代器类型,这种额外工作可能会花费更大代价。因此,养成使用前置操作这个好习惯,就不必担心性能差异的问题。

这个问题是分两种情况的:
1、对于内置数据类型,以现在的编译器的优化水平,前++和后++没区别的,这个可以通过看汇编代码证明
2、对于自定义数据类型,像STL,前++的效率要高于后++,所以STL中关于iterator都是前++的

简单的说:
i++(在c++中)在实现的时候,系统会产   
  生了一个local object class  INT;   

复制代码
 1 //++i    
 2 INT   INT::operator++()   
 3 {   
 4       *this=*this+1;   
 5       return   *this;   
 6 }   
 7 
 8 //i++   
 9 const INT INT::operator  ++(int)   
10 {   
11         INT   oldvalue=*this;   
12         *this=*this+1;   
13         return   oldvalue   
14 }
复制代码

 


  所以从效率上来说:++i比i++来的更有效率 

posted @   LiuYanYGZ  阅读(196)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示