「これはヤバかったな」という遅刻エピソード

UNIX windows98でC言語をプログラムしました。

#include<stdio.h>
void main()
{
int val;
val=5;
printf("今、変数の中身は、 %dです¥n”, val);
val=val+1;
printf(”今、変数の中身は、 %dです¥n", val);
 val=val++;
printf("今、変数の中身は、 %dです¥n”,  val);

}
をファイル名 aaaとして
gcc aaa.c でコンパイルしたところ、
aaa.c: In function 'main':
aaa.c:5:warning: return type of 'main' is not 'int'
とエラ-が現れます。
return(o);を最後に追加するのでしょうか。もし、そうならば、どこに追加する
のか、教えてください。
  

A 回答 (3件)

標準のCでは、main は int型の関数であると定められています。


main が返す値が、そのプログラム自身が返す値として使えるよう
にするためです。

Cのテキストのいくつかは、main を void で宣言したり、教師もそ
れに沿ってそのまま教えてしまうことがありますが、正確には誤り
です。コンパイル時の warning (エラーではない)はそれを警告
しています。warning は場合によっては無視しても正しく動きます
が、それが原因で動かないこともあるので、極力修正しましょう。

結論は、main を int と宣言し、最後は 0 を return しておきましょう。

ちなみに return 文は、後に式が続くだけなので、return (0); の
ようにしなくても、return 0; で十分です。
    • good
    • 0
この回答へのお礼

お答えありがとうございます。
コンパイルは成功しました。

お礼日時:2001/06/12 18:40

戻り値が設定されていないというワーニングですね。


void型は戻り値がないわけではないので、
書いておくのが妥当です。
やっぱり、コンパイルかけたときに
エラーもワーニングもないと気分がいいじゃないですか。

参考URL:http://www.kumei.ne.jp/c_lang/
    • good
    • 1
この回答へのお礼

お答えして頂き、有難うございます。

お礼日時:2001/06/12 18:35

エラーではなくワーニングですから、そのままにしておいても特に問題は


ありませんが一応・・・。

このワーニングは「main関数の戻り値型がintではない」というものです。
main関数は本来、プログラムが正常に終わったかどうかをint型で返す事に
なっているため、boboboboさんの「void main()」という記述が引っかかっ
てしまったわけです。

ですから「void main()」を「int main()」に直し、最後の「}」の直前の
行に「return(0);」を書けばワーニングはなくなるはずです。
    • good
    • 0
この回答へのお礼

お答え有難うございます。早速、アドバイス通りに書き換えると、
コンパイルは上手くできました。 

お礼日時:2001/06/12 18:22

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


おすすめ情報