如果一个函数是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
}
答案 0 :(得分:0)
是的,每次迭代都会检查for循环中的条件。如果您在那里调用的函数非常昂贵,那么您应该将值存储在变量中。但是,如果你有一个短循环,它确实不会有所作为。
答案 1 :(得分:0)
这取决于语言(如果有一个方法调用作为测试的一部分,以及编译器是否可以确定方法调用是否不会改变每次迭代)
例如,在某些情况下,VB.NET评估一次,c#每次评估。
最近有一个问题说明了这一点:Why does C# execute Math.Sqrt() more slowly than VB.NET?