我试图通过示例说明前缀增量比后缀增量更有效。
理论上这是有道理的:i++ 需要能够返回未递增的原始值并因此存储它,而 ++i 可以返回递增的值而不存储先前的值。
但是在实践中是否有一个很好的例子来证明这一点?
我尝试了以下代码:
int array[100];
int main()
{
for(int i = 0; i < sizeof(array)/sizeof(*array); i++)
array[i] = 1;
}
我使用 gcc 4.4.0 编译它,如下所示:
gcc -Wa,-adhls -O0 myfile.cpp
我再次这样做了,后缀增量更改为前缀增量:
for(int i = 0; i < sizeof(array)/sizeof(*array); ++i)
结果在两种情况下都是相同的汇编代码。
这有些出乎意料。似乎通过关闭优化(使用-O0),我应该看到展示概念的不同之处。我错过了什么?有更好的例子来说明这一点吗?