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(0) ; } }

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