以下是引用Eahonxu在2016-7-31 00:03:14的发言:
有个小问题,就是为什么这个程序开头本应有int main然而你只打了main并且结尾没有return 0;也可以运行成功呢?
古老的C标准,如果函数没有显式的声明返回类型,则认为返回类型为int
例如在古老的过去 foo( double ) 就等同于 int foo( double )
但是,现在的C标准早就禁止这一点了,在gcc中你可以加个参数 -std=c99 或 -std=c11 试试,会有警告:warning: return type defaults to 'int' [-Wimplicit-int]
在现代的C标准中,对于main函数,如果一个返回分支没有显式的写出return,则认为return 0;
例如
int main( void )
{
if( ... )
return 123;
}
等同于
int main( void )
{
if( ... )
return 123;
return 0;
}