我是编程新手。当我发现一些奇怪的行为时,我试图将方程的总和加到先前的值上。

如果我在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;

  }
}

最佳答案

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

int result = 0;

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

关于c++ - 初级程序员C++(局部变量与全局变量声明),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37621856/

10-11 22:43
查看更多