Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops FOR循环的循环测试部分中的函数是否在每次迭代时都被调用?_Loops_For Loop - Fatal编程技术网

Loops FOR循环的循环测试部分中的函数是否在每次迭代时都被调用?

Loops FOR循环的循环测试部分中的函数是否在每次迭代时都被调用?,loops,for-loop,Loops,For Loop,如果函数是FOR循环中循环测试的一部分,那么该函数是在循环的每次迭代中调用的,还是仅在第一次迭代中调用以设置循环 e、 g 在循环之前定义一个值为字符串长度的变量是否更好 e、 g 是的,for循环中的条件在每次迭代时都会被检查。如果您在那里调用的函数非常昂贵,那么您肯定应该将该值存储在变量中。但是,如果您有一个短循环,它实际上不会有什么区别。这取决于语言,测试中是否有方法调用,以及编译器是否能够确定方法调用是否不会改变每次迭代 例如,在某些情况下,VB.NET计算一次,c每次计算一次 最近有一

如果函数是FOR循环中循环测试的一部分,那么该函数是在循环的每次迭代中调用的,还是仅在第一次迭代中调用以设置循环

e、 g

在循环之前定义一个值为字符串长度的变量是否更好

e、 g


是的,for循环中的条件在每次迭代时都会被检查。如果您在那里调用的函数非常昂贵,那么您肯定应该将该值存储在变量中。但是,如果您有一个短循环,它实际上不会有什么区别。

这取决于语言,测试中是否有方法调用,以及编译器是否能够确定方法调用是否不会改变每次迭代

例如,在某些情况下,VB.NET计算一次,c每次计算一次


最近有一个SO问题说明了这一点:

问问你自己,如果用函数调用替换测试表达式,它是否会进行评估:对于int i=0;isDonei;i++{…}我想你知道答案,所以我想你知道你问题的答案
for (i = 0; i < strlen(someString); i++) {
    // Do Something 
}
int length = strlen(someString);

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