当前位置: 首页 > news >正文

建设营销型网站流程/实时积分榜

建设营销型网站流程,实时积分榜,德清县住房和城乡建设局网站,外包网页制作页面多少钱一张本节来讨论一个比较有趣的话题:C语言中的 i 和 i,编译为程序后,它们的执行效率一样吗?执行效率一样吗?i 和 i 的执行效率一样吗?i;i;就C语言代码来看,i 和 i 都只有一行,看起来似乎二…

本节来讨论一个比较有趣的话题:C语言中的 i++ 和 ++i,编译为程序后,它们的执行效率一样吗?

cd571b4a0dc6daf7e3a72391cb34fde0.png

执行效率一样吗?

i++ 和 ++i 的执行效率一样吗?

i++;++i;

就C语言代码来看,i++ 和 ++i 都只有一行,看起来似乎二者的执行效率一样了?其实不是的,在学习C语言时,教材和老师一般都会强调 i++ 和 ++i 的区别,例如下面这段C语言代码:

int i , j, k;i = 0;j = i++;i = 0;k = ++i;

这段C语言代码执行后,j 和 k 的值并不相等:j 等于 0,k 等于 1。既然执行结果有差异,那么执行效率很有可能也是有差异的,事实的确如此。查看上述C语言代码对应的汇编代码,如下:

3f27a31f4d416035c573932b8c34d029.png

C语言代码对应的汇编代码

我使用的编译器为 gcc version 4.8.4。

可见,j=i++; 计算机需要 4 条指令来解释,比执行 k=++i; 多出了一条指令。多出的一条指令为:在对 i 执行自加操作之前,先保存 i 的当前值留作稍后使用(赋值为j)。

这样看来,似乎 ++i 的执行效率比 i++ 高一些?

那为了写出效率更高的C语言程序,以后是不是应该尽量使用 ++i,而不是 i++ 了呢?例如下面这样的C语言代码:

for(i=0; i<10; i++);for(i=0; i<10; ++i);

是不是上面那行C语言代码的执行效率低于下面的呢?只能说理论如此,实际上,现代C语言编译器已经足够聪明,它会根据上下文编译C语言代码。

022b5e4069e128ecb12b2fd1bce087f3.png

编译器会根据上下文编译C语言代码

应该明白,i++ 和 ++i 的效率差异主要来自于处理 i++ 时,需要先保存 i 的当前值留作稍后使用。如果之后没有人使用 i 的当前值,也就是说没有C语言代码读取 i++ 的值,编译器实在没有必要保存 i 的当前值了,因此就会将这一步优化掉。

为了便于分析,我们编写下面这样的C语言代码:

int i = 0;i++;++i;

与上面的例子相比,区别在于在执行 i++ 时,没有人关心 i 的当前值了。查看这段C语言代码对应的汇编代码:

db91c6fbf86354dbfac5c263a6f80061.png

对应的汇编代码

显然,i++ 和 ++i 对应的指令是一模一样的,不再有执行效率上的差异。

小结

C语言中的 i++ 和 ++i 是有区别的,这就有可能带来效率上的差异。如果有代码关心 i++ 执行时的 i 当前值,程序在对 i 进行自加操作时,将不得不先保存 i 的当前值,而 ++i 就无需保存当前值,这就会带来效率上的差异。如果没人关心 i++ 的当前值,那么现代大多数C语言编译器将会将这一差异优化掉,此时 i++ 和 ++i 不再有效率上的差异。

a8249b88a60a69834ebbe2d82373bbe7.png

点个赞再走吧

欢迎在评论区一起讨论,质疑。文章都是手打原创,每天最浅显的介绍C语言、linux等嵌入式开发,喜欢我的文章就关注一波吧,可以看到最新更新和之前的文章哦。

未经许可,禁止转载。

http://www.lbrq.cn/news/4141.html

相关文章:

  • 网站建设要学哪些软件有哪些内容/杭州seo专员
  • 前沿的设计网站/深圳网络推广
  • sns社交网站 有哪些/一个新产品策划方案
  • 电商平台如何搭建/搜索引擎优化的简称
  • 公司网站开发步骤/如何建立电商平台
  • 农产品电商网站建设/sem和seo是什么职业
  • 贵州做网站的公司有哪些/关键词的优化方案
  • 咸阳做网站/谷歌chrome安卓版
  • 工业设计公司经营范围/北京网站优化指导
  • 一个网站需要多少钱/营销网站建设规划
  • 东莞做网站还赚钱吗/种子搜索神器在线搜
  • vultr 做网站空间/百度云盘资源搜索
  • 四川网站网站建设/抖音指数
  • 丰县微网站开发/网页设计与制作考试试题及答案
  • 免费建设小说网站/网络营销课程思政
  • 网站新功能演示用什么技术做的/个人怎么做网站
  • 南宁专业网站建设/东莞seoseo关键词排名优化
  • 做问卷赚钱最好似网站/佛山做网站推广的公司
  • 门户网站区别/优化的含义是什么
  • 如何开发游戏/上海关键词seo
  • 京东上怎样做网站/网站规划与设计
  • 济南学生网站建设求职/关键词排名优化流程
  • wordpress 附件下载统计/网络营销的seo是做什么的
  • 建筑人才招聘/抖音seo
  • 做公众号链接的网站/上海网络推广团队
  • 银川网站制作公司/中国免费网站服务器主机域名
  • 帮开设赌场的网站做美工/网络推广外包注意哪些
  • 最专业网站建设公/站长之家统计
  • 网站建设app小程序开发/宁波seo外包平台
  • 网站建设flash/提交百度一下
  • pytorch | minist手写数据集
  • C# StringBuilder源码分析
  • 简单2步配置CadenceSkill开发编辑器,支持关键字高亮
  • Linux:1_Linux下基本指令
  • Transformer江湖录 第五章:江湖争锋 - BERT vs GPT
  • ubuntu之坑(十五)——设备树