2017-09-17 19 views
-1

上記のmのスニペット値は、常に0として表示されます。なぜなら、複数回のコンパイル後でも変更されない理由は、割り当てられていなければ自動的に割り当てられ、nの値は常に変更されます私がコンパイルするたびにランダムに変わる?割り当てられていない場合、intとcharの固定割り当てはありますか?


私にはコンセプトがありませんか?

+0

これらの値には値はありません。それらは初期化されず、その値は*不確定です*。 – usr

+0

コンパイラは、ローカル変数を0に設定するコードを生成する可能性がありますが、必ずしもそうする必要はなく、C標準に反するものではありません。何らかの理由で探索する価値がないため、常に値*が0になる可能性もあります。いずれにしても、値を読み取る前に値を設定する必要があります。 –

答えて

0

あなたのようなローカル変数は自動変数です。それらはスタックメモリに割り当てられ、その値はゴミです。

グローバル変数は、暗黙的に静的記憶域クラスを持ち、デフォルトで値が0です。

mはローカル変数であるため、その値は常に同じである必要はありません。それは不確定です。このメモリ位置は、他のプロセスに与えることができます。

関連する問題