c++ - 静态变量和 For 循环
问题描述
我已经为我的问题制作了一个最小的可重现示例:
#include <iostream>
void Func()
{
static int i = 0;
for (i; i < 5; i++)
{
std::cout << i << "\n";
return;
}
}
int main()
{
Func();
Func();
Func();
}
其输出为“0”、“0”、“0”。我希望它输出“0”、“1”、“2”。我如何实现这一目标?
解决方案
问题是Func()
return
s 紧随其后i
被打印出来,i++
(作为循环的迭代表达式for
)根本没有被评估。
您可能想要(即使循环在这里似乎毫无意义,函数return
在第一次迭代时总是 s):
void Func()
{
static int i = 0;
for (;i < 5;)
{
std::cout << i << "\n";
i++;
return;
}
}
或者
void Func()
{
static int i = 0;
for (;i < 5;)
{
std::cout << i++ << "\n";
return;
}
}
PS:我不确定你的意图,但正如@FrançoisAndrieux 和@Jarod42 评论的那样,使用if
orwhile
似乎更有意义,如果你想i
每次都增加Func()
但不会大于5
.
推荐阅读
- c# - 使用 foreach 在二维数组中添加空格
- javascript - 为什么时间戳不同?
- jenkins - 如何在 Jenkins Slack Uploader 中输入文件路径以将文件发布到 Slack 频道
- javascript - 无法向 MailChimp 提交数据
- gcc - 如何在 Windows 上执行 gcc 的“x”文件输出?
- react-router-dom - 尝试使用 react-router-dom 在 clojurescript 中创建多页应用程序
- spring-boot - 使用 jsch 的 Sftp 到大型机
- javascript - React JS 中的 window.addeventlistener('resize') componentDidMount 循环
- r - 每个值的列中返回值 = 给定月份
- python - 删除python集中的部分字符串