return返回的数值由程序的作者自定。返回不同的值可以代表不同的含义,一般是代表出错的原因,传统上返回0代表程序正常结束。
在 C89(C语言的早期标准)中, main() 是可以接受void返回值的。Brian W. Kernighan 和 Dennis M. Ritchie 的经典巨著 The C programming Language(《C 程序设计语言》)用的就是void main( )。不过在最新的 C99 标准中,只有以下两种定义方式是正确的:
int main(void)
int main(int argc, char *argv[])
main 函数的返回值类型必须是 int ,这样返回值才能传递给操作系统。在大多数系统中,main函数的返回值是一个状态指示器。返回值0往往表示main函数成功执行完毕。任何其他非零的返回值都有操作系统定义的含义。通常非零返回值表明有错误出现。每一种操作系统都有自己的方式告诉用户main函数返回什么内容。
如果 main 函数的最后没有写return 语句的话,C99 规定编译器要自动在生成的目标文件中(如 exe 文件)加入 return 0 ,表示程序正常退出。注意,vc6 不会在生成的目标文件中加入return 0 .不过,gcc3.2(Linux 下的 C 编译器)会在生成的目标文件中加入return 0 。
在C++98(C++语言的一个标准)中定义了如下两种 main 函数的定义方式:
int main( )
int main( int argc, char *argv[] )
在 C 和 C++ 中,不接收任何参数也不返回任何信息的函数原型为“void foo(void);”。main 函数的返回值应该定义为 int 类型,C 和 C++ 标准中都是这样规定的。虽然在一些编译器中,void main 可以通过编译(如 vc6),但并非所有编译器都支持void main ,因为标准中从来没有定义过 void main 。g++3.2 中如果main 函数的返回值不是int 类型,就根本通不过编译。而gcc3.2
则会发出警告。所以,如果你想你的程序拥有很好的可移植性,请一定要用int main 。