java和C语言中x++和++x的效率高低

转载请注明转载链接

语法

i++,先运算,后赋值
++i,先赋值,后运算

代码执行过程

i++在java和C中的代码执行过程:取出i,复制i,增加i,返回副本;
++i在java和C中的代码执行过程:取出i,增加i,返回i;

分析

从这里看似乎是++i效率更高一点。
所以为了写出效率更高的C语言程序,以后是不是应该尽量使用 ++i,而不是 i++ 了呢?
例如下面这样的C语言代码:
for(i=0; i<10; i++);
for(i=0; i<10; ++i);
是不是上面那行代码的执行效率低于下面的呢?
只能说理论如此,实际上,现代C语言编译器和java语言编译器已经足够聪明,它会根据上下文编译语言代码。

结论

i++ 和 ++i 的效率差异主要来自于处理 i++ 时,需要先保存 i 的当前值留作稍后使用。如果之后没有使用 i 的当前值,编译器实在没有必要保存 i 的当前值了,因此就会将这一步优化掉。

小结

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值