プログラミングテキスト プログラミングテキスト
 C 言 語 戻る

main関数 と return文

 プログラムは、OSから呼び出されて実行される。プログラムの実行が終了するとOSに戻る。OS(Operating System)は、コンピューターを動かすためのソフトウェアで、コンピューター全体を管理、制御し、人が使えるようにする役割がある。

 プログラムの実行が終わるとき、OSに実行が終わったことを知らせるために値(整数)を返す。この値はOSによって利用されるもので、プログラムの実行には影響を与えない。一般に、正常終了のときは0、異常終了のときは0以外を返すことが多い。

 以前は、return文の扱いが決まっていなかったのでmain関数も次のようにいろいろな書き方がされていた。私の記憶だけなので正確でないところもあります。

main()
{
    printf("Hello\n");
}
 最初はmainに何も書いていなかった。
main(void)
{
    printf("Hello\n");
}
 何もないことを明示すべきだ、ということで、main関数の引数は何もいこと示すためvoidを書いた。
void main(void)
{
    printf("Hello\n");
}
 main関数もほかの関数と同じだから返却値の型を示すべきだ、ということで、返却値がないことを示すためvoidを書いた。
int main(void)
{
    printf("Hello\n");
}
 OS(MS-DOS)の環境変数ERRORLEVELで返却値を使っている(使える)。その値は整数である。ということで、返却値の型としてintを書いた。
int main(void)
{
    printf("Hello\n");
    return;
}
 main関数がint型(整数型)の値を返すと明示してあるのにプログラムの中で値を返す命令がないのはおかしい、ということで、プログラムが終了する位置にreturn文を書いた。
int main(void)
{
    printf("Hello\n");
    return(0);
}
 return文に返却値が書かれていないのはおかしい、ということで、無難に0を返すよう書いた。そのとき、printfなどほかの関数と同じように引数に()を付けて書いた。
int main(void)
{
    printf("Hello\n");
    return 0;
}
 return文は関数ではないので引数に()を付けるのはおかしい、まぎらわしい、ということで値0だけを書いた。

 最後の形が、今の一般的な書き方のようです。
 このC言語のサイトはわりと古くから書いていますので、上記のようなmain関数が混在しています。
 main関数は、次のように書くようにしましょう。

int main(void)
{
    printf("Hello\n");
    return 0;
}
int main(int argc, char *argv[])
{
    printf("Hello\n");
    return 0;
}

 return文(命令)と同じような関数ではない命令がある。breakとcontinueである。

 

 

プログラミングテキスト  メール  ご意見・ご感想・誤り訂正は連絡用フォームから 戻る
Copyright © 2017 Hiroshi Masuda


inserted by FC2 system