While 语句 - 无法理解概念

While statements - Cant understand a concept

我目前正在学习 C++,现在我被 while 语句困住了。 问题是我无法正确理解在 while 语句开始之前初始化变量或变量在 main 中全局初始化之间有什么区别。

下面的一段代码可能会更好地解释我的问题:

int main()
{
using namespace std;
int x = 1;
while (x <= 5)
{
    int y = 1;
    while (y <= x)
    {
        cout << y++ << " ";
    }
    cout << "\n";
    ++x;
}

return 0;

}

此代码输出为:

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5

但以下

int main()
{
using namespace std;
int x = 1;
int y = 1;
while (x <= 5)
{
    //int y = 1;
    while (y <= x)
    {
        cout << y++ << " ";
    }

    cout << "\n";
    ++x;
}

return 0;
}

产生:

1
2
3
4
5

嗯,这听起来可能很愚蠢,但我真的需要理解它。我已经讨论了几个主题,但是变量的初始化位置并没有让我明白这一点。如果有人能指出我正确的方向,那将不胜感激。 谢谢

y = 1 在第一种情况下,当第一个 while 循环开始时,会一次又一次地初始化。

在第二种情况下,它没有再次初始化,即它达到x的值并且没有进入第二个while循环。

在第二个代码中,这都是因为 y 的值从未被重置为 y=1

而在第一种情况下,您总是在 while() 循环检查条件并进入循环时分配 int y=1

示例中的第一个循环表明,对于 x 的每个值,y 变量将再次初始化为 1,y 的值将上升到 x(这意味着每次 x 增加时您都将 y 初始化为 1) .

对于第二个例子,y 只初始化一次,每次 x 值增加(变化)时都会使用它的最后一个值。

while 用于循环,在第一个程序中,每次 while 循环时都初始化 y=1 。在第二个程序中,它总是得到 y=1 因为它没有被循环。希望这能澄清您的问题。

与其说是初始化,不如说是赋值。以下是您的代码的执行方式,大致如下:

第一个案例

  1. 为 x 和 y 分配内存
  2. 将 x 设置为 1
  3. 检查x是否小于5,否则转到9
  4. 将 y 设置为 1
  5. 检查y是否小于x,否则转到8
  6. 打印 y
  7. 增加y,转到5
  8. 增加x,转到3
  9. 结束

第二种情况

  1. 为 x 和 y 分配内存
  2. 将 x 设置为 1
  3. 将 y 设置为 1
  4. 检查x是否小于5,否则转到9
  5. 检查y是否小于x,否则转到8
  6. 打印 y
  7. 增加y,转到5
  8. 增加x,转到4
  9. 结束

注意第 3 点和第 4 点是如何在两种情况之间交换的。