e2.c

ゴミの値を使ってはダメ


/* ↓初期設定していない */ int gomi ; printf("gomi = %d¥n",gomi) ;
解説 初期化していない自動変数(この場合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)	 <-- 初期化なしで値を参照
		....
}