背景
疑惑把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