澤口@一升金です。 Kazutaka さんの<20040408102753.22556@xxxxxxxxxxxxxx>から >自動変数の初期値は「不定」と認識していたのですが、ANSIではゼロなんでし >ょか。実は真面目にANSIもK&Rも読んでないので、まったくもって自信ナシな >んですが....。 わたしもうろ覚えなのですが、C言語では main() 内で宣言された ローカル変数は デフォルトでは auto クラスではなく、 static クラスらしいです。 ですから、宣言時に初期化もできるし、初期代入がなければ 0 で クリアされているはず。 明示的にクラス指定子 auto をつけてやれば不定になるのかも。 わたしの勝手な思いつきによれば、昔はスタック領域を変数として アクセスできないか、アクセスが非常にやりづらい CPU があり、 (だけど、ローカルスコープの変数は使いたい) 便宜のために決まったんじゃないかと。 例えば8051や6502なんかはスタックポインタが8bit 幅しかありま せんし、スタックポインタの無い CPU というものが昔はありました。 ↓ http://www.st.rim.or.jp/~nkomatsu/texasinstruments/TMS9900.html LSI時代に入ってさえこうですから、ましてや、C言語が作成された 当時のミニコン全盛期では。