根据任何有关 c++ 的书,任何未初始化的 c++ 局部变量都将包含垃圾值。但是,请查看以下程序:
#include<iostream>
using namespace std;
float a;
class A
{
public:
float b;
};
int main()
{
float c;
static float d;
static float e = 0;
A f;
cout<<"\n global a : "<<a<<"\n class variable b : "<<f.b;
cout<<"\n local c : "<<c<<"\n static local d : "<<d
<<"\n static initialized local e : "<<e;
}
如果在 ubuntu linux 上使用 g++ 编译,它会给出以下输出:
global a : 0
class variable b : 6.94896e-36
local c : 0
static local d : 0
static initialized local e : 0
奇怪的是它为局部变量 c 提供了一个 0 值,而这应该是未初始化的并且包含一些垃圾值。同一个程序在 windows 的 Visual c++ 中的工作方式不同,并为 c 提供了一个垃圾值,这是您所期望的。