【发布时间】:2012-10-20 10:36:53
【问题描述】:
我在很多游戏引擎代码中都看到了这一点。这应该比在 for 循环体中声明它更快吗?此外,还有许多其他 for 循环,每个循环都使用相同的变量。
int i;
for(i=0; i<count; ++i)
{
}
对
for(int i=0; i<count; ++i)
{
}
顺便说一句,我自己从不这样做,只是好奇它背后的想法,因为除了性能我不知道为什么有人会这样做。
【问题讨论】:
-
我非常怀疑这个程序集有什么不同。
-
克里斯是对的。这样做的原因是因为某些编译选项不喜欢在循环体中声明它。两者是一样的,只是编译器偏好等等。
-
如果它在循环之外,您也可以稍后继续循环。像
int i; for(i = 0; i < count; i++) { /* do stuff */ if(arr[i].group == 2) break; } /*do stuff */ for(; i < count; i++) { /* do stuff with group 2 */ }这样的东西。不过可能不是最好的设计。 -
@chris:当然,程序集可能不同,将其中一个替换为另一个可能会导致程序具有不同的含义:liveworkspace.org/code/a67b2d82aafe2bd413bef5a744478510
-
@Mankarse,真的。我的意思是,如果
i仅在循环中使用,则很可能是相同的。
标签: c# c++ performance for-loop