考点:i++和++i的效率比较。
出现频率:★★★
解析:
简单的比较前缀自增运算符和后缀自增运算符的效率是片面的, 因为存在很多因素影响这个问题的答案。 首先考虑内建数据类型的情 况:如果自增运算表达式的结果没有被适用, 而是仅仅简单地用于增 加一元操作数, 答案是明确的,前缀法和后缀法没有任何区别。 编译 器的处理都应该是相同的, 很难想象得出有什么编译器实现可以别出 心裁地在二者之间制造任何差异。
示例程序如下。
#include<>
2
3 int main()
4{
int i=0;
int x=0;
7
i++;
++i;
x=i++;
x=++I;
12 13 return 0;
14 }
上面的代码在 VISUAL C++ 上编译得到的汇编如下:
; Line 5
mov DWORD PTR_i$[dbp],0
; Line 6
mov DWORD PTR_i$[dbp],0
; Line 8
mov eax,DWORD PTR_i$[ebp]
add eax,1
mov DWORD PTR_i$[ebp],eax
; Line 9
mov eax,DWORD PTR_i$[ebp]
add eax,1
mov DWORD PTR_i$[ebp],eax
; Line 10
mov edx,DWORD PTR_i$[ebp]
mov DWORD PTR_x$[ebp],edx
mov eax,DWORD PTR_i$[ebp] add eax,1
mov DWORD PTR_i$[ebp],eax
; Line 11
mov edx,DWORD PTR_i$[ebp] add eax,1
mov DWORD PTR_x$[ebp],edx mov eax,DWORD PTR_i$[ebp] mov DWORD PTR_i$[ebp],eax
■ 代码段第 8 行和第 9 行生成的汇编代码分别对应 Lin
i++与++i哪个效率更高 来自淘豆网www.taodocs.com转载请标明出处.