背景

疑惑把for循环中的布尔表达式中包含函数的时候,是每次判断都会调用一次函数,还是会优化成只有第一次判断的时候调用函数,后面直接与第一次调用时返回的常量对比。

形式for(int i = 0; i < func(); ++i)

结论

每次判断都会调用函数

代码

#include <iostream>

using namespace std;

int func()
{
    cout << "Call" << endl;

    return 10;
}

int main()
{
    for (int i = 0; i < func(); ++i) {
        continue;
    }

    return 0;
}
STD_OUT:
Call
Call
Call
Call
Call
Call
Call
Call
Call
Call
Call
如果觉得我的文章对你有用,请随意赞赏