我是编程新手。当我注意到一些奇怪的行为时,我试图将等式的总和加到前一个值上。
如果我在int result
内声明int main ()
,我会得到一个空白答案,但如果我在int result
之外宣布int main ()
,那么我会得到以下值:6,11,16 ...... 91,96,101。因为我没有其他功能,所以对我没有意义。
为什么会这样?
#include<iostream>
using namespace std;
int main ()
{
int y =1;
int result;
while (result <100)
{
result = y +5;
cout << result << ",";
y = result;
}
}
答案 0 :(得分:5)
在函数中,int result;
声明一个名为result
的变量,但不会将其初始化为任何特定值。在为它赋值之前,它可以是任何值,并且从中读取时的行为是未定义的。因此,当您在while
条件下读取其值时,它可能是任何东西;你的循环可能会执行,也可能不会。您需要为result
提供初始值,以使您的程序行为定义明确:
int result = 0;
与局部变量不同,全局变量被定义为在没有显式提供初始值时初始化为默认值,因此当您在result
条件中读取while
的值时,它是{ {1}},循环执行。