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」を、一新して記載するようになっています。
ここで質問ですが、両方のやり方で、コンパイルすると両方ともエラーなくきちんと表示されます。しかしこれはどのような理由で変更されたのでしょうか?
詳しい方がいましたら、ご回答よろしくお願い申し上げます。
No.3ベストアンサー
- 回答日時:
本当に「詳しい人」に聞きたいなら, こんなところに質問するのではなく出版社に問い合わせるべきではないかな. 著者自身がここを見てるかどうかわからないし, よしんば見て回答していたとしてもそれが本当に「著者の回答」なのか, 判断のしようもないでしょ?
まず 1つ考えられるのが「お行儀」. 引数リストの void は「今の場合は」書かなくてもいい (書いてあるかどうかで意味の変わる場面は存在する) し, 返り値の型も「省略されていれば int」と推定するので書かなくてもいい. でも, いろいろ考えた結果「引数がないときには void と書く」とか「返り値の型は int であっても書く」とかしたんじゃないかな.... 手元にその本は (どっちの版も) ないので確認できないんだけど, 前の版で main の中に return 文はありますか?
もう 1つ, 返り値の型を書くようになった理由としては C++ の絡みも考えられます.
まあ今から勉強するならどちらも書かない理由はないわけですが.
No.4
- 回答日時:
古い方といわれてるのは K&R で書かれた形式となります
その当時さすがにK&Rってのはある意味ですさまじいので
新しい方は ANSI C 準拠に合わせて記載が変わったということではないかと思います
同一の例が以下に記載されています
http://d.hatena.ne.jp/keyword/K%26R
No.1
- 回答日時:
c言語 int main(void)
でgoogle検索すると論議の歴史の長さが伺えます。c言語のキーワード外してもまた読み応えアリ。
void main()も含めたこちらが一番読み応えがありました。
http://oshiete.goo.ne.jp/qa/3185703.html
c言語の幅広さと個々人の理想。「人生とは何か」と考えてしまいました・・ぉぃ
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ネットショッピング・通販・ECサイト) 骨伝導ヘッドセットで この二つは値段が違うだけでは同じですか? 1 2023/02/13 19:13
- 飛行機・空港 電動のネッククーラーは空港の検査に通せますか? 3 2023/06/25 19:31
- サバイバルゲーム このタイプの差し込み口ってなんの種類か分かりますか? 3 2022/07/29 15:32
- ZOZOTOWN このタイプの差し込み口ってなんの種類か分かりますか? 2 2022/07/29 15:31
- 船舶・クルーズ Windows10のエクスプローラにて。 1 2022/10/10 20:11
- テレビ これを買って室内に置けば、地デジが観れるのでしょうか。 2 2022/04/04 14:15
- 工学 都市ガスの燃焼速度 3 2022/08/03 12:59
- マウス・キーボード Pc切替器が動作しません。理教えてください。よろしくお願いします。 4 2023/05/10 15:43
- その他(パソコン・スマホ・電化製品) 古くなった超音波洗浄機における超音波トランスデューサーの交換 2 2022/11/12 11:07
- その他(ネットショッピング・通販・ECサイト) このFMトランスミッターをAmazonで注文したら本物がちゃんと来ますか? 新規出品者みたいですし商 5 2023/05/04 17:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【gcc・cygwin】multiple defin...
-
多重定義が起きている?--lnk20...
-
VC++でGetKeyboardStateがうま...
-
戻り値を返す関数の前に(void)...
-
既定のコンストラクタがありま...
-
stddef.hって何?
-
C# KeyDownイベントでショート...
-
クラス間でのクラスの共有?
-
C言語 ① 5秒間 1秒間隔で点滅を...
-
静的でないメンバ関数の呼び出...
-
(void)0 はどんな意味ですか
-
スレッドの作成について(pthre...
-
void*型の配列について
-
コンパイルエラー: LNK2001
-
C++にてtemplateで受け取った任...
-
const_castのつかいどころを教...
-
DLLの関数呼び出しで引数がある...
-
C# Controls.Addで動的に配置し...
-
‘*’をツリー状に表示しろという...
-
アドレスを指定して関数を呼び...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【gcc・cygwin】multiple defin...
-
int main()、void main()、void...
-
戻り値を返す関数の前に(void)...
-
既定のコンストラクタがありま...
-
Notepad++の関数リスト表示の変...
-
ArduinoでMouse関数を使用して...
-
多重定義が起きている?--lnk20...
-
C++にてtemplateで受け取った任...
-
静的でないメンバ関数の呼び出...
-
C# Controls.Addで動的に配置し...
-
const_castのつかいどころを教...
-
(void)0 はどんな意味ですか
-
C# KeyDownイベントでショート...
-
gcc: incompatible pointer type
-
C#でラジオボタンを設定に記録...
-
VC++でGetKeyboardStateがうま...
-
C言語 ① 5秒間 1秒間隔で点滅を...
-
void*型の配列について
-
GDI+の使用方法について
-
DirectInput でのエラー
おすすめ情報