我已经制作了我的问题的最小可重现示例:
#include <iostream>
void Func()
{
static int i = 0;
for (i; i < 5; i++)
{
std::cout << i << "\n";
return;
}
}
int main()
{
Func();
Func();
Func();
}
Run Code Online (Sandbox Code Playgroud)
其输出为“0”、“0”、“0”。我希望它输出“0”、“1”、“2”。我如何实现这一目标?
的问题是,Func() return年代后立即i被打印出来,i++(作为iteration_expression的for环)完全不进行评价。
你可能想要(即使循环在这里似乎毫无意义,函数总是return在第一次迭代):
void Func()
{
static int i = 0;
for (;i < 5;)
{
std::cout << i << "\n";
i++;
return;
}
}
Run Code Online (Sandbox Code Playgroud)
或者
void Func()
{
static int i = 0;
for (;i < 5;)
{
std::cout << i++ << "\n";
return;
}
}
Run Code Online (Sandbox Code Playgroud)
PS:我不确定您的意图,但正如@FrançoisAndrieux 和@Jarod42 所评论的那样,使用if或while似乎更有意义,如果您想i在每次Func()调用时增加但不会大于5.
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |