1 c++ global-variables local-variables
我是编程新手.当我注意到一些奇怪的行为时,我试图将等式的总和加到前一个值上.
如果我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;
}
}
Run Code Online (Sandbox Code Playgroud)
在函数内,int result;声明一个名为的变量result,但不会将其初始化为任何特定值.在为它赋值之前,它可以是任何值,并且从中读取时的行为是未定义的.因此,当你在你的while条件下阅读它的价值时,它可能是任何东西; 你的循环可能会执行,也可能不会.您需要提供初始值,result以使您的程序行为定义明确:
int result = 0;
Run Code Online (Sandbox Code Playgroud)
不像局部变量,全局变量的定义时,明确规定任何初始值被初始化为默认值,所以当你阅读的价值result在你的while条件,它是0和你的循环执行.