1

質問1:

変数のデフォルト値をどのように知ることができますか? それは(私の語彙が間違っている場合)割り当てられる前の変数の値ですか?

質問2:

これはコンパイラ間でどのように異なりますか?

質問 3:

値をデフォルトにするより良い方法はありますか?

質問 4:

最後に、この規則には他に例外がありますか?

コード例:

bool foolean;
int fintoo;
double fooble;
char charafoo;

これらは、コンパイラからコンパイラへのデフォルトで何になりますか?

4

2 に答える 2

8

C++ のすべてのバージョンで、名前空間スコープで宣言されている場合、質問のすべての変数は (静的に) ゼロで初期化されます。それ以外の場合はすべて、初期化しないままにしておくと、値がガベージになります。

ガベージ値は、変数が定義されているメモリ位置にあるものであることに注意してください — それは単なる 0 と 1 のパターンです。このような値は、プログラムで読み取るべきではありません。読み取らないと、コードで未定義の動作が呼び出されます

C++11 で、これらをローカル変数 (または名前空間変数) として記述すると、次のようになります。

bool foolean {};
int fintoo {};
double fooble {};
char charafoo {};

これらはデフォルトで初期化されており、この場合はゼロを意味します (組み込み型であるため)。

于 2013-07-27T19:35:53.063 に答える