虽然陈述 - 不能理解一个概念

时间:2016-03-27 10:06:27

标签: c++ loops variables while-loop statements

我目前正在学习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

嗯,这可能听起来很愚蠢,但我真的需要理解它。我已经经历了几个主题但是变量初始化的地方并没有在这里找到我。如果有人可以指出我正确的方向,那将非常感激。 感谢

5 个答案:

答案 0 :(得分:0)

y = 1在第一种情况下第一个while循环开始时再次初始化。

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

答案 1 :(得分:0)

在第二个代码中,所有内容都是因为y的值从未重置为y=1

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

答案 2 :(得分:0)

示例中的第一个循环显示,对于x的每个值,y变量将再次初始化为1,y的值将上升到x(意味着每次x增加时都将y初始化为1)。 / p>

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

它不是关于初始化,而是关于分配。以下是您的代码执行方式,大致如下:

第一种情况

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

    1. 为x和y
    2. 分配内存
    3. 将x设为1
    4. 将y设为1
    5. 检查x是否小于5,否则转到9
    6. 检查y是否小于x,否则转到8
    7. 打印y
    8. 递增y,转到5
    9. 增加x,转到4
    10. 结束
    11. 注意第3点和第4点如何在两种情况之间进行交换。