在 C++ 中使用函数参数作为循环变量

tqw*_*tqw 1 c++ for-loop nested-loops function-definition

foo使用函数参数作为循环变量

void foo(int i, int j) {
    for (; i < 5; ++i)
        for (; j < 5; ++j)
            std::cout << i << " " << j << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

foo(0, 0)打印

0 0
0 1
0 2
0 3
0 4
Run Code Online (Sandbox Code Playgroud)

我想知道为什么i总是0

Vla*_*cow 5

我想知道为什么我总是0。

你误会了。该变量i在函数内从 更改为0. 5:)

问题是在第一次执行内部 for 循环之后

 for (; j < 5; ++j)
        std::cout << i << " " << j << std::endl;
Run Code Online (Sandbox Code Playgroud)

变量j变得等于5。因此,在外部 for 循环的所有其他迭代中,内部 for 循环都会被跳过。

为了获得预期的结果,您可以在函数中编写例如

void foo(int i, int j) {
    for (; i < 5; ++i)
        for ( int k = j; k < 5; ++k)
            std::cout << i << " " << k << std::endl;
}
Run Code Online (Sandbox Code Playgroud)