• 締切済み

素朴な疑問

つまらない質問ですが int i; printf("%d",i); のように値を代入しないで実行するといつもへんな数が出てきます。 このときメモリの領域には何が格納されているんでしょうか?値を宣言しただけでもう領域にはなにかが書き込まれているということでしょうか?

みんなの回答

  • g_zero
  • ベストアンサー率37% (26/70)
回答No.2

int i; は、値を格納するメモリ上の「場所」を確保しているだけです。 その際中身は見ていません。つまり初期化は行っていないわけです。 なので中身は何が入っているか不明。結果、変な値が出力されます。 他の言語では宣言と同時に初期化されることは多いのですが、Cはそのようなことはありませんので注意が必要です。

szatmari
質問者

お礼

回答ありがとうございます。

すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.1

当該変数のために割り当てた領域に、たまたま入っていた値を出力します。 当該変数が関数内の自動変数である場合、初期値がゼロであることを期待してはいけません。

szatmari
質問者

お礼

回答ありがとうございます。たまたまって何がその値をきめるんでしょうね。

すると、全ての回答が全文表示されます。

関連するQ&A