C および C++ のローカル変数は自動的に初期化されず、初期値が指定されていない場合、それらはガベージ値を持つことを知っています。また、グローバル変数と静的変数はデフォルトでゼロに初期化されることも知っています。初期化されていない変数を使用すると、C++ で未定義の動作が発生します。
しかし最近、C++ のさまざまな実装で単純な C++ プログラムを実行しようとしましたが、すべて出力として 0 が返されます。
#include <iostream>
int main()
{
int u;
std::cout<<u<<'\n';
}
出力:
コードブロック 13.12 IDE: 0
Orwell Dev C++ 5.8.3: 0
Ideone.com: 0 (これにアクセスしてください: http://ideone.com/zWrgwo )
最新のコンパイラがローカル変数を自動的に 0 に初期化するというのは本当ですか? またはそのようなタイプのプログラムはまだ未定義の動作を表していますか? C++ のすべての最新の実装で常に 0 が出力として表示されることが保証されていますか?