静态变量 & For 循环

Hyd*_*den 4 c++ static

我已经制作了我的问题的最小可重现示例:

#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”。我如何实现这一目标?

son*_*yao 6

的问题是,Func() return年代后立即i被打印出来,i++(作为iteration_expressionfor环)完全不进行评价。

你可能想要(即使循环在这里似乎毫无意义,函数总是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 所评论的那样,使用ifwhile似乎更有意义,如果您想i在每次Func()调用时增加但不会大于5.