e40.c

異常時処理は大丈夫?


修正前: int func(int 木) { int ret ; /* 変数「ret」はゴミ値 */ switch(木) { case 松: ret = 1 ; break ; case 竹: ret = 2 ; break ; case 梅: ret = 3 ; break ; /* 木の種類に「桜」が来た場合を考えていない */ } return(ret) ; }
修正後: #define NG (-1) int func(int 木) { int ret ; switch(木) { case 松: ret = 1 ; break ; case 竹: ret = 2 ; break ; case 梅: ret = 3 ; break ; default: ret = NG ; /* 異常時処理を追加して下さい */ } return(ret) ; }
解説 上記の場合は、defaultが無いと、 木の種類に「桜」が来た場合、 変数「ret」はゴミ値となります。 予期せぬ入力にも対応しましょう。