e2.c
ゴミの値を使ってはダメ





/* ↓初期設定していない */
int gomi ;
printf("gomi = %d¥n",) ;
解説
初期化していない自動変数(この場合gomi)はゼロではありません。
ゴミです。
『今正常に動いている』と言うあなたへ、
『たまたま動いている』のです。
絶対に放置しないで修正して下さい。
Review-C側の誤認:
このエラーの厳密な定義は、
『自動非配列変数に対する最初の参照が変数への
最初の代入より、前の行番号で発生しました。』
です。
このため、ループの中で変数の参照/代入している時、
Review-C側の誤認が発生します。
この場合、あなたに落ち度はありません。
しかし、3年後どこかでだれかがソース修正する時の事を考えて、
初期化しておく事が望ましいと考えます。
詳細な説明は、
『プログラミング言語C 第2版 ANSI規格準拠
カーニハン リッチー著/石田晴久訳』
「1.10 外部変数と通用範囲」Page38
か、
C-FAQ 1.30J
C-FAQ 1.30E
を参照して下さい。
★ 配列の変数の初期化を忘れて、値を参照しているところはReview-Cで検出できません。
★ 各自コーディングおよびレビューする際は、気を付けて下さい。
int aaaa()
{
int x[10] ; <-- 配列の変数
if(x[0] > 100) <-- 初期化なしで値を参照
....
}