i++与++i哪个效率更高

i++与++i哪个效率更高

ID:40556698

大小:25.00 KB

页数:4页

时间:2019-08-04

i++与++i哪个效率更高_第1页
i++与++i哪个效率更高_第2页
i++与++i哪个效率更高_第3页
i++与++i哪个效率更高_第4页
资源描述:

《i++与++i哪个效率更高》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、考点:i++和++i的效率比较。出现频率:★★★解析:简单的比较前缀自增运算符和后缀自增运算符的效率是片面的,因为存在很多因素影响这个问题的答案。首先考虑内建数据类型的情况:如果自增运算表达式的结果没有被适用,而是仅仅简单地用于增加一元操作数,答案是明确的,前缀法和后缀法没有任何区别。编译器的处理都应该是相同的,很难想象得出有什么编译器实现可以别出心裁地在二者之间制造任何差异。示例程序如下。1#include23intmain()4{5inti=0;6intx=0;78i++;9++i;10x=i++;11x=++I;12return0;3}上面的代码在

2、VISUALC++6.0上编译得到的汇编如下:;Line5movDWORDPTR_i$[dbp],0;Line6movDWORDPTR_i$[dbp],0;Line8moveax,DWORDPTR_i$[ebp]addeax,1movDWORDPTR_i$[ebp],eax;Line9moveax,DWORDPTR_i$[ebp]addeax,1movDWORDPTR_i$[ebp],eax;Line10movedx,DWORDPTR_i$[ebp]movDWORDPTR_x$[ebp],edxmoveax,DWORDPTR_i$[ebp]addeax,1movDWORD

3、PTR_i$[ebp],eax;Line11movedx,DWORDPTR_i$[ebp]addeax,1movDWORDPTR_x$[ebp],edxmoveax,DWORDPTR_i$[ebp]movDWORDPTR_i$[ebp],eax■代码段第8行和第9行生成的汇编代码分别对应Line8和Line9下面的汇编代码,可以看到3个步骤几乎完全一样。■代码段第10行和第11行生成的汇编代码分别对应Line10和Line11下面的汇编代码,可以看到都是5个步骤,只是在加1的先后顺序上有一些区别,效率也是完全一样的。由此说明,考虑内建数据类型时,它们的效率差别不大(取出编

4、译器优化的影响)。再考虑自定义数据类型(主要是指类)的情况。此时不需要再做很多汇编代码的分析,因为前缀是(++i)可以返回对象的应用,而后缀是(i++)必须返回对象的值,所以导致在大对象的时候产生了较大的复制开销,引起效率降低,因此使用自定义类型(注意不是指内建类型)的时候,应该尽可能地使用前缀式递增或递减。答案:在内建数据类型的情况下,效率没有区别。在自定义数据类型的情况下,++i的效率较高。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。