e192.c
混ぜるな危険





修正前
int func(arg)
int arg ;
{
switch(arg) {
case 1: return(1) ;
case 2: return(2) ;
case 3: return(3) ;
case 4: return(4) ;
default : return ;/*★ゴミ値返却*/
}
}
修正例
static int func(arg)
int arg ;
{
switch(arg) {
case 1: return(1) ;
case 2: return(2) ;
case 3: return(3) ;
case 4: return(4) ;
default : return() ;
}
}
解説
この関数には返却値のある時と、(恐らく、正常ルート)
返却値の無い時があります。 (恐らく、異常ルート)
『★』 の所を通過時、何が表示されるかは、神様だけが知っています。
=>つまりBUGです。
現在動いているのは、試験してないか、単なる『ラッキー』です。
詳細な説明は、
『プログラミング言語C 第2版 ANSI規格準拠
カーニハン リッチー著/石田晴久訳』
「4.1 関数についての基本事項」Page86
を参照して下さい。