e400.c
正常時のみ考慮された変数




原作:
int e400(int setval)
{
int i ;
if (setval != 0)
{
i = setval * 3 ;
}
/* if ブロックが実行されなければ、戻り値 i にはゴミが入ったまま */
return i ;
}
修正例:
int e400(int setval)
{
int i = -1 ;
if (setval != 0)
{
i = setval * 3 ;
}
/* i には初期値 -1 が入力されているので、正しくエラーコードを返せる */
return i ;
}
解説:
変数が初期化されていない場合、いくつかの処理を経てきた段階で、
それが正しく代入されているかどうか判別が付きづらくなります。
変数宣言時に必ず初期化しておくのは、
(いろんな説があるものの)一般的には悪い考えではありません。
処理が必ずプログラマーの管理下におけるよう、適切な値で初期化しましょう。
これは e40 の 異常時処理は大丈夫? と同種の警告です。
違いは e40 が変数の宣言行を警告するのに対し、e400 は変数の使用行を警告します。