更改"未初始化的局部变量"错误的行为

Ruc*_*hir 1 c++ global-variables

请考虑以下代码:

#include "stdafx.h"
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
  int count123;
  for (int c = 0; c < 10; c++)
  {
    count123 += c;
  }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译后我收到警告: warning C4700: uninitialized local variable 'count123' used

我知道原因是宣布count123但没有初始化它.

但是,如果我将count123声明为全局变量,如下面的代码所示,则警告消失.

#include "stdafx.h"
using namespace std;

int count123;
int _tmain(int argc, _TCHAR* argv[])
{

  for (int c = 0; c < 10; c++)
  {
    count123 += c;
  }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

据我所知,将count123声明为全局变量会改变其范围但是如何删除警告?请指导.

Chr*_*phe 5

全局变量初始化为零(顺便说一下,这同样适用于静态变量).这就是为什么你没有得到这个消息.

这里的标准报价:

8.5/10:在进行任何其他初始化之前,每个静态存储持续时间的对象在程序启动时都是零初始化的.在某些情况下,稍后会进行额外的初始化.