专栏首页C语言及其他语言为什么说 ++i 的效率比 i++ 高?

为什么说 ++i 的效率比 i++ 高?

++i与i++的区别

这两个表达式从我们初学编程语言的时候就会接触到。前者是自增后取值,后者是取值后自增。

运行结果:

对于这个结果我们并不感到意外。

另外我们还注意到另外一个有意思的现象:

编译后报错:

说&作用于左值,也就是说a++的结果并非左值。但++b的结果是左值。

可简单理解左值和右值:

1.左值,有名对象,可赋值

2.右值,临时对象,不可被赋值

运算符重载

仔细观察后,我们发现前置自增,先自增,后返回原对象的对象;没有产生任何临时对象;而后置自增,先保存原对象,然后自增,最后返回该原临时对象,那么它就需要创建和销毁,这样一来,效率孰高孰低就很清楚了。

在不进行赋值的情况下,内置类型前置和后置自增的汇编都是一样的呢!

汇编:

不过,赋值的情况下,并且不开启编译器优化,它们的汇编代码还是有差别的,有兴趣的可以试试。

总结

对于内置类型,前置和后置自增或者自减在编译器优化的情况下,两者并无多大差别,而对于自定义类型,如无特别需要,人们似乎更加偏爱前置自增或自减,因为后置自增常常会产生临时对象。

但是,又能提高多少效率呢?

本文分享自微信公众号 - 编程范(dotcpp),作者:季夏

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C语言网Online Judge系统支持语言和编译说明

    Online Judge系统支持语言和编译情况: 语言编译器语言版本编译参数Cgcc 4.6.3C99gcc Main.c -o Main -Wall -lm ...

    编程范 源代码公司
  • [优秀题解]题目1277[Lucky Word]

    题目描述 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这...

    编程范 源代码公司
  • 【每日一题】亲密数

    题目描述 两个不同的自然数A和B,如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)之和等于A,则将整数A和B称...

    编程范 源代码公司
  • ZOJ 3710 Friends

    Alice lives in the country where people like to make friends. The friendship is ...

    ShenduCC
  • 测试python HTTPServer功

    py3study
  • 洛谷P3704 [SDOI2017]数字表格

    题目描述 Doris刚刚学习了fibonacci数列。用f[i]f[i] 表示数列的第ii 项,那么 f[0]=0f[0]=0 ,f[1]=1f[1]=1 , ...

    attack
  • 什么是仓库管理仓管云来告诉你

      仓储管理的基本原则分别为:效率的原则,仓储作业管理的核心是效率管理。经济效益的原则,作为参与市场经济活动主体之一的仓储业,也应围绕着获得最大经济效益的目的进...

    明象ERP
  • 在unity中使用三种简单的方式实现实时时钟动画

    在 unity 中,材质是用来给一个对象的细节,所以我们可以决定它会看起来像什么。在大多数情况下,材料将以纹理为参数。

    hrscy
  • iOS编程101:如何创建圆形头像和圆角图片

    IOS7的一个变化是相对于方形图像,更偏爱于使用圆形图像。在内置的应用中可以看到圆形图标或圆形图像,如联系人和电话应用。这篇短文中,我们将探讨CALayer类,...

    Jace
  • Android--Path之Op

    aruba

扫码关注云+社区

领取腾讯云代金券