初学者程序员c ++(本地与全局变量声明)

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)

Mil*_*nek 5

在函数内,int result;声明一个名为的变量result,但不会将其初始化为任何特定值.在为它赋值之前,它可以是任何值,并且从中读取时的行为是未定义的.因此,当你在你的while条件下阅读它的价值时,它可能是任何东西; 你的循环可能会执行,也可能不会.您需要提供初始值,result以使您的程序行为定义明确:

int result = 0;
Run Code Online (Sandbox Code Playgroud)

不像局部变量,全局变量的定义时,明确规定任何初始值被初始化为默认值,所以当你阅读的价值result在你的while条件,它是0和你的循环执行.