-2

例如

for (int i = 0; i < 10; ++i) 
...

对比

对于 (int i = 0; i < 10; i++) ...

有人告诉我 ++i 会更有效率。其他语言(例如 JavaScript)是否存在差异,或者它是更基本的规则?

4

4 回答 4

4

i++ 和 ++i 之间的区别在于表达式的值。

值 i++ 是增量前 i 的值。++i 的值是递增后 i 的值。

但是,在您的循环中,它没有任何区别。

int i = 0;
00000088  xor         edx,edx 
0000008a  mov         dword ptr [ebp-40h],edx 
            i++;
0000008d  inc         dword ptr [ebp-40h] 
            ++i;
00000090  inc         dword ptr [ebp-40h] 
于 2013-09-25T10:45:09.923 回答
2
for(int i=0;i<10;i++)
{
 //some jobs
}

是相同的:

int i=0;
while(i<10)
{
 //some jobs
   i++;
}

for(int i=0;i<10;i++)
{
 //some jobs
}

等于:

int i=0;
while(i<10)
{
 //some jobs
   ++i;
}

所以这里没有区别,性能是一样的

i++ 是后增量,++i 是前增量,因此在其他情况下存在差异,但在性能上没有差异。您可以在此处阅读有关前后增量的更多信息C# Pre- & Post Increment混淆

于 2013-09-25T10:45:22.173 回答
0

++ii++如果您不在同一个表达式中分配结果,则它并不比在 C# 中更有效。两种情况都生成相同的代码。

当然,如果您将结果分配给同一表达式中的某些内容,则生成的代码有所不同——但在这种情况下,语义是不同的,您无法选择使用哪种形式的增量。

所以使用你最喜欢的。

于 2013-09-25T10:51:46.297 回答
0

在某些语言中使用 ++i 的优点是它不会不必要地创建临时变量(参见例如 Exceptional C++ 以获得对 C++ 的全面解释)。

于 2013-09-25T10:45:14.317 回答