アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語のmain関数について、質問させていただきます。

私の手元に、林 晴比古さんが執筆された著書、
2007年度版の新C言語入門 スーパービギナー編 (C言語実用マスターシリーズ) [単行本]
http://www.amazon.co.jp/gp/product/4797325631/re …
があります。

これと同一の2000年度版の著書、
http://www.amazon.co.jp/%E6%96%B0C%E8%A8%80%E8%A …
も、所持しています。

main関数の書き方が、2007年度版の新しい方では、
int main(void)
{
}
と記載されており、
2000年度版の古い方では
main()
{
}
と記載されています。

改訂版なので両者を同じページで内容や例題を照らし合わせても、この部分が変わっていることを確認できます。
つまり、2007年度版では、2000年度版では書かかなくてよかった「void」を、一新して記載するようになっています。

ここで質問ですが、両方のやり方で、コンパイルすると両方ともエラーなくきちんと表示されます。しかしこれはどのような理由で変更されたのでしょうか?

詳しい方がいましたら、ご回答よろしくお願い申し上げます。

A 回答 (4件)

本当に「詳しい人」に聞きたいなら, こんなところに質問するのではなく出版社に問い合わせるべきではないかな. 著者自身がここを見てるかどうかわからないし, よしんば見て回答していたとしてもそれが本当に「著者の回答」なのか, 判断のしようもないでしょ?



まず 1つ考えられるのが「お行儀」. 引数リストの void は「今の場合は」書かなくてもいい (書いてあるかどうかで意味の変わる場面は存在する) し, 返り値の型も「省略されていれば int」と推定するので書かなくてもいい. でも, いろいろ考えた結果「引数がないときには void と書く」とか「返り値の型は int であっても書く」とかしたんじゃないかな.... 手元にその本は (どっちの版も) ないので確認できないんだけど, 前の版で main の中に return 文はありますか?

もう 1つ, 返り値の型を書くようになった理由としては C++ の絡みも考えられます.

まあ今から勉強するならどちらも書かない理由はないわけですが.
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。とても参考になりました。

お礼日時:2013/11/04 14:06

古い方といわれてるのは K&R で書かれた形式となります


その当時さすがにK&Rってのはある意味ですさまじいので
新しい方は ANSI C 準拠に合わせて記載が変わったということではないかと思います

同一の例が以下に記載されています
http://d.hatena.ne.jp/keyword/K%26R
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。とても参考になりました。

お礼日時:2013/11/04 14:05

はじめはvoid型なんてなかった。


関数は何らかの値を返す必要があった。

しかし、何も返す必要のない処理ばかり書いているうち、
void型が欲しくなって作られたのである。

ZEROの発明と同じですね。
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。とても参考になりました。

お礼日時:2013/11/04 14:06

c言語 int main(void)


でgoogle検索すると論議の歴史の長さが伺えます。c言語のキーワード外してもまた読み応えアリ。

void main()も含めたこちらが一番読み応えがありました。
http://oshiete.goo.ne.jp/qa/3185703.html
c言語の幅広さと個々人の理想。「人生とは何か」と考えてしまいました・・ぉぃ
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。とても参考になりました。

お礼日時:2013/11/04 14:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!