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

时间:2016-06-03 19:15:03

标签: 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;

  }
}

1 个答案:

答案 0 :(得分:5)

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

int result = 0;

与局部变量不同,全局变量被定义为在没有显式提供初始值时初始化为默认值,因此当您在result条件中读取while的值时,它是{ {1}},循环执行。