一个无数人讨论过的问题,今天终于看到一个人讲得全面而清楚。下面这个帖子是
shornmao (死猫)发的,我只是帮他贴过来而已,希望死猫不会生我的气。
-----------------------
首先声明,简单的比较前缀自增运算符和后缀自增运算符的效率是片面的,因为存在很多因素影响这个问题的答案。
首先考虑内建数据类型的情况:
如果自增运算表达式的结果没有被使用,而仅仅简单的用于增加一员操作数,答案是明确的,前缀法和后缀法没有任何区别,编译器的处理都应该是相同的,很难想象得出有什么编译器实现可以别出心裁在二者之间制造任何差异。
测试C++源代码如下:
//test1.cpp
void test()
{
int i=0;
i++;
++i;
}
Gnu C/C++ 2编译的汇编中间代码如下:
.file "test1.cpp"
gcc2_compiled.:
___gnu_compiled_cplusplus:
.text
.align 4
.globl _test__Fv
.def _test__Fv; .scl 2; .type 32; .endef
_test__Fv:
pushl