【发布时间】:2021-02-15 12:33:58
【问题描述】:
我有循环,每次调用该函数时都想迭代一次。 这是我的代码:
#include <iostream>
void iter(int max_i, int max_j){
static int i = 0;
static int j = 0;
for (; i< max_i; i++ ){
for(; i<max_j; j++){
std::cout << i << " " << j << std::endl;
return;
}
}
}
int main(){
iter(4,4);
iter(4,4);
iter(4,4);
return 0;
}
但是结果显示每次调用函数都是从零开始的。
amirreza@time:/tmp$ g++ iterate.cpp
amirreza@time:/tmp$ ./a.out
0 0
0 0
0 0
【问题讨论】:
-
你在递增之前返回,所以
i和j永远不会改变。 -
我对您的代码和您的描述“我有循环并想迭代一次...”感到有些困惑。这并不是循环的真正用途。你能澄清一下你想要达到的目标吗?
-
看起来你想要像协程这样的东西。 en.cppreference.com/w/cpp/language/coroutines 如果您想在每次调用时执行 for 循环的步骤。很不清楚你在问什么......
-
@AmirrezaRiahi 不,由于
return,它不会被执行。您想要实现的具体目标是什么,您期望的输出是什么? -
我想我明白了。你希望它表现得像一个循环,但每次调用只有一次。 IE。第一次调用 i=0,j=0。第二个 i=0,j=1 等。当 j 达到 max_j 时,它会重置并且 i 递增,等等。出于好奇,当 i 和 j 实际上都达到它们的极限时,你想发生什么?从那以后就成为一个无操作者?
标签: c++ loops iteration static-variables