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 は変数の使用行を警告します。