在以下代码中:
#include <iostream>
using namespace std;
int main()
{
int num = 0;
while (num >= 0 && num <= 3)
{
int inner_loop_count = 0;
cout << "Loop # " << ++inner_loop_count << "\n";
num++;
}
}
输出是:
循环#1
循环#1
循环#1
循环#1
我的理解是循环范围在大括号 {} 之间,不能用于定义循环计数器,因为每次都会重做声明和初始化。
我尝试了以下解决方案:
- 使用静态关键字。 (无论好坏)。
- 将 while 本身包含在外部 {} 中,并在 while 之前声明计数器变量。
问题一: 我的理解正确吗?
问题 #2: 是否有其他技术上可行的解决方案?
谢谢
原文由 Shadi 发布,翻译遵循 CC BY-SA 4.0 许可协议
您实际上无法在循环体内定义循环计数器。正如您所提到的,一个
static
可以在给定的上下文中在技术上工作。但是,如果第二次进入循环,则计数器不会从 0 开始。因此,改为使用
for
循环。这就是它的“目的”:
它由与
while
循环等效定义,该循环放置在放置int num = 0
声明的封闭大括号块中。更新
++num
被放置在循环体的底部,如下所示:…您避免使用
for
来编写。