私はCを学び始めたLinuxユーザーで、入力したこのソースをコンパイルしようとしています。
#include <stdio.h>
main()
{
float c,d;
c = 10215.3;
d = c / 3;
printf("%3.2f\n",d);
return 0;
}
それは私が書いたメイクファイルを使ってこれでコンパイルされました:
cc -Wall -g printf.c -o printf
しかし、私はこの警告を受けています:
printf.c:2:1:警告:戻り値の型のデフォルトは ‘int’ [-Wreturn-type]
それはコードをコンパイルし、私は望ましい出力を得ますが、これが何を意味するのかを理解したいです
main()
する必要があります
int main()
C89では、デフォルトの戻り値の型はint
であると想定されているため、機能します。
C89では、デフォルトの戻り値の型はintです。このデフォルトはC99で削除され、コンパイラはmain()の前にintがないCスタイルが古くなっていることを思い出させるのに役立ちます。
C89仕様のセクション3.5.2「タイプ指定子」を参照してください。
"型指定子の各リストは、次のセットのいずれかである必要があります:[...] + int、signed、signed int、またはタイプ指定子なし "。
また、セマンティクスの2番目の段落では、「ビットフィールド[blabla]の場合を除いて、[[...]セットのそれぞれが同じタイプを指定している」としています。つまり、「型指定子なし」はintと同じです。
C99では、「型指定子がない」という部分は削除されています。 (しかし、intの部分がなくてもsignedと書くことができます。)