E.g。
for (int i = 0; i < 10; ++i)
...
vs
for(int i = 0; i&lt; 10; i ++)...
我被告知++我会更有效率。是否存在其他语言(如JavaScript)的差异,还是更基本的规则?
答案 0 :(得分: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]
答案 1 :(得分: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 ++是postincrementation,++ i是preincrementation,因此在其他情况下存在差异,但性能不同。您可以在此处阅读有关前后增量的更多信息C# Pre- & Post Increment confusions
答案 2 :(得分:0)
在某些语言中使用++ i的优点是它不会不必要地创建一个临时的(参见例如Exceptional C ++以获得对C ++的全面解释)。
答案 3 :(得分:0)
++i
在C#中的效率不比i++
高。为这两种情况生成相同的代码。
当然,如果将结果分配给同一表达式中的某些内容,将与生成的代码区别开来 - 但在那种情况下,语义是不同的,你没有选择使用哪种增量形式。
因此,请使用您最喜欢的。