読んでただけ
ISO / IEC 9899:201x委員会草案— 2011年4月12日
5.1.2.2.3プログラムの終了で見つけた場所
..reaching the } that terminates the main function returns a value of 0.
つまり、でreturnステートメントを指定せずmain()
、プログラムが正常に実行された場合、mainの右中括弧}で0が返されます。
しかし、次のコードではreturnステートメントを指定していませんが、0を返しません
#include<stdio.h>
int sum(int a,int b)
{
return (a + b);
}
int main()
{
int a=10;
int b=5;
int ans;
ans=sum(a,b);
printf("sum is %d",ans);
}
コンパイル
gcc test.c
./a.out
sum is 15
echo $?
9 // here it should be 0 but it shows 9 why?
gcc
それ自体(バージョン4.6.2の場合)は、非常によく似ていますがCとはまったく似ていない言語をコンパイルします。GnuC89をコンパイルします。これは、C89に基づいて「緩やかに」言語です。
return
ステートメントの括弧sum()
は不要です。 int main()
する必要がありますint main(void)
。