例如
for (int i = 0; i < 10; ++i)
...
对比
对于 (int i = 0; i < 10; i++) ...
有人告诉我 ++i 会更有效率。其他语言(例如 JavaScript)是否存在差异,或者它是更基本的规则?
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]
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混淆
++i
i++
如果您不在同一个表达式中分配结果,则它并不比在 C# 中更有效。两种情况都生成相同的代码。
当然,如果您将结果分配给同一表达式中的某些内容,则生成的代码会有所不同——但在这种情况下,语义是不同的,您无法选择使用哪种形式的增量。
所以使用你最喜欢的。
在某些语言中使用 ++i 的优点是它不会不必要地创建临时变量(参见例如 Exceptional C++ 以获得对 C++ 的全面解释)。