• ベストアンサー

C言語について大変初歩的なことなのですが…

先日C言語でのプログラミングを勉強し始めようと思いたち、 「世界一わかりやすいCプログラミングの授業」という本を買ったのですが、 書いてあった、 #include <stdio.h> main() { printf("hello,world\n"); } というプログラムを作ったのですが、エラーが起きました。 そこで「C言語入門」と検索し調べたサイトでは、 mainの前にintと入っていたのでそうしてみたところエラーがおきませんでした。 本が間違っているとは思えないのですが、これはどういう事でしょうか、教えてください。 まだなんの知識もないのでお手数ですがそこを考慮していただくとありがたいです。 

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

本当に、エラーだったのであれば、Cの規格が関係しているのでしょう。 最近、現在、Cの規格は、C99と呼ばれるものが最新です。 この規格では、「宣言時の暗黙の型」の規定が変更されました。 まず、main() というのも、Cの規格上「関数」です。 そして、関数には、「型」があります。 ですから、main() という関数にも、「型(規格上は int )」を指定して、 int main() と書く必要があります。 一方で、最近まで使われていた(現在でも、かなり使われている)規格では、「型が書いてない関数は、int と見なす」という規格になっていました。 このため、 main() と書けば、 int main() のことと見なして処理してくれたわけです。 これは、さらに古い規格で、「int じゃない関数は、型を明示しなければならないが、int の関数は、特に書かなくてもOK」という位置づけで作られていたプログラムを救済するための規格だったわけです。 こういうわけで、C99 に従っているコンパイラだと、int がないとエラーにするかもしれません。 あと、 「本が間違っているとは思えないのですが」 とのこと。 いや、時々、本にも間違いが書いてありますので気をつけてください。 今回の問題は、その本が書かれた時点では間違いではなかったケースですが。

noname#125895
質問者

お礼

そうだったんですか、ためになりました。 そこら辺のことも考慮しながら勉強していきたいと思います。 ありがとうございました。

その他の回答 (3)

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.4

2005年の本なんですね・・・・。 残念ながら、その本は「ハズレ」です。 手垢のつかないうちに古本屋に売りましょう。

回答No.2

コンパイルしようとしてエラーがでたのなら、 コンパイラの性質によるエラーである可能性が高いです。 C言語では int main(void) { .... } と書くのが正式ですが、コンパイラによっては、 main() { .... } と書くと自動的に、 int main(void) { .... } と解釈するものもあり、「世界一わかりやすいCプログラミングの授業」は、 そういうコンパイラ向けに書かれているのだと思います。 自動的に int main(void) に解釈されないコンパイラではコンパイルエラーになります。

noname#125895
質問者

お礼

詳しい説明ありがとうございました。 そのあたりを補って読めば大丈夫でしょうかね。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

>エラーが起きました。 どんなエラーメッセージが出ましたか? 「エラーが起きた」だけでは、何もわかりません。 また、使っているコンパイラは何ですか?