int main()函数是否必须在所有编译器中返回一个值?

这个问题在这里已经有了答案:

  • main()应该在C和C ++中返回什么? 19个答案

  • 在C ++中,在C99和C11中,如果控制流到达main函数的末尾,则语言的特殊规则是,函数impliclty返回0


    在C ++和C99 / C11中,在main函数中没有返回语句,它默认返回0 ;

    §3.6.1主要功能

    main中的return语句具有离开main函数(销毁具有自动存储持续时间的任何对象)并以返回值作为参数调用std :: exit的效果。 如果控制到达main的结尾而没有遇到return语句,则效果是执行return 0;

    还阅读wiki页面的C / C ++主要功能

    如果程序员未定义返回值,则返回0; main()函数的末尾由编译器插入; 此行为是C ++标准所要求的。


    main必须返回一个int ,包括Turbo C ++在内的一些编译器可能允许其他返回值,特别是void main ,但它是错误的,从不使用它。

    但是在C ++中,如果你没有明确地返回一个main的值,它就和return 0;

    C ++ 11§3.6.1主要功能部分5

    main中的return语句具有离开main函数(销毁具有自动存储持续时间的任何对象)并以返回值作为参数调用std :: exit的效果。 如果控制到达主的结尾而没有遇到return语句,则效果是执行

    return 0;
    

    请注意,对于C,这仅在C99及更高版本中受支持,但不受C89支持。

    链接地址: http://www.djcxy.com/p/28731.html

    上一篇: Must the int main() function return a value in all compilers?

    下一篇: Is char *envp[] as a third argument to main() portable