我目前正在学习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
嗯,这可能听起来很愚蠢,但我真的需要理解它。我已经经历了几个主题但是变量初始化的地方并没有在这里找到我。如果有人可以指出我正确的方向,那将非常感激。 感谢
答案 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)
它不是关于初始化,而是关于分配。以下是您的代码执行方式,大致如下:
注意第3点和第4点如何在两种情况之间进行交换。