条件检入C中的循环

时间:2014-09-06 04:43:56

标签: c for-loop

假设我有一个字符串" str"。 我的for循环如下:

 for(i=0;i<strlen(str);i++){

    //do stuff

 }

问题:当检查条件时,i&lt; strlen(str),是每次循环运行时计算的strlen(str)部分吗?或者它被存储并且仅在第一次计算?

1 个答案:

答案 0 :(得分:5)

循环中的条件表达式将在每次迭代时得到评估 - 具有,直到(理想情况下)表达式变为false。是的:strlen(str)将一遍又一遍地计算。如果字符串根本没有变化,那么如果将其长度存储在局部变量中,它会更好。

int n = strlen(str);
for (i=0; i<n; i++) {
    // do stuff
}

这也有效:

for (i=0; str[i] != '\0'; i++) {
    // do stuff
}
相关问题