每次迭代都调用FOR循环的循环测试部分中的函数吗?

时间:2011-01-12 00:04:36

标签: loops for-loop

如果一个函数是FOR循环中循环测试的一部分,那么该循环的每次迭代都会调用该函数,或者只是第一次迭代来设置循环。

e.g。

for (i = 0; i < strlen(someString); i++) {
    // Do Something 
}

在循环之前定义变量是更好的形式,其值是字符串长度吗?

e.g。

int length = strlen(someString);

for (i = 0; i < length; i++) {
    // Do Something
}

2 个答案:

答案 0 :(得分:0)

是的,每次迭代都会检查for循环中的条件。如果您在那里调用的函数非常昂贵,那么您应该将值存储在变量中。但是,如果你有一个短循环,它确实不会有所作为。

答案 1 :(得分:0)

这取决于语言(如果有一个方法调用作为测试的一部分,以及编译器是否可以确定方法调用是否不会改变每次迭代)

例如,在某些情况下,VB.NET评估一次,c#每次评估。

最近有一个问题说明了这一点:Why does C# execute Math.Sqrt() more slowly than VB.NET?