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 用のビジュアル c++ とは異なる動作をし、期待どおりの c のガベージ値を与えます。