C言語関係掲示板

過去ログ

No.1300 main関数の書き方

[戻る] [ホームページ]
No.17477

main関数の書き方
投稿者---どん(2004/10/23 20:10:49)


はじめまして、
1週間前からC言語を始めた初心者ですが、よろしくお願いします。

本当に初歩的な内容なのですが、main関数の書き方について質問したいと思います。

main関数は、いろいろなサイトや本を見てみると、
本当にさまざまな書き方があるように思います。
・int main()
・main()
・int main(void)
・void main()
などです。

これらはどのように違うのでしょうか?

printf関数などは
「printf("表示させたい文字");」
などと、決まった書き方をしますが、
main関数にはないのでしょうか?

()の中は空欄でも良いし、voidがついたりintがついたり・・・


あと、return 0;と最後に書け。と指示する本もあれば、
書かない本もあるみたいです。。。

回答よろしくお願いします


No.17478

Re:main関数の書き方
投稿者---NykR(2004/10/23 21:21:28)


>main関数は、いろいろなサイトや本を見てみると、
>本当にさまざまな書き方があるように思います。
>・int main()
>・main()
>・int main(void)
>・void main()
>などです。
>
>これらはどのように違うのでしょうか?

規格で認められているのは以下の2種類

int main(void)
int main(int argc, char ** argv)

及びそれと等価な(戻り値と引数の型が同じ)書き方だけです。
但し処理系が独自に他の戻り値や引数を持った書き方を許すこともできます。

上記の4つについてはそれぞれ

・int main()
関数定義ではint main(void)と同じ、引数をとらないという意味になる(宣言の場合は違います)。
但し廃止予定事項なので、このような書き方はしない方が良い。
# C++では話が別です。

・main()
戻り値の型がない場合の動作は未定義、書いてはいけない。

・int main(void)
ok

・void main()
処理系によっては認めている場合もある。移植性がないので奨められない。

です。


>あと、return 0;と最後に書け。と指示する本もあれば、

戻り値がint型なら書かなければなりません。
#C++では話が違います。

void型なら書いてはいけません。