对c中的main函数使用return vs return 0

时间:2014-02-16 15:46:54

标签: c return main

在我关于C的书中,作者通常将main()格式化为:

main()
{
     /* Some code */
     return;
}

但有时候,他会像这样格式化main()

main()
{
     /* Some code */
     return 0;
}

有什么区别?这有关系吗?

3 个答案:

答案 0 :(得分:4)

C标准说(草稿n1570

5.1.2.2.1程序启动

  

程序启动时调用的函数名为main。实施宣布否   这个功能的原型。 应使用int 的返回类型进行定义,但不能   参数:

int main(void) { /* ... */ }
     

或有两个参数(此处称为argcargv,但可能有任何名称   使用,因为它们是声明它们的函数的本地函数):

int main(int argc, char *argv[]) { /* ... */ }
     

或等同物; 10)或以某种其他实现定义的方式。

现在,如果函数的返回类型不是void,那么你必须使用

return exp;

如果其返回类型为void,则可以使用(不必要)

return;  

如果是main,您可以使用return 0;,但C99允许您省略return语句。

答案 1 :(得分:2)

首先,main应声明为:

int main(void)

int main(int argc, char *argv[]) 

带有命令参数的版本有一些变体,如int main(int argc, char **argv)

必须返回int才能符合标准。因此,如果程序正常运行,您必须在结尾int返回return 0

请注意,在C99或更高版本中,您可以省略return 0。如果main执行到最后,则return 0是隐含的。

答案 2 :(得分:0)

返回值表示(un)成功完成环境,允许所述环境监视它而不是解析打印的消息。 - 见this question.

您应该在return 0中使用main,并使用正确声明的main函数。在声明为void的函数中,只有return没有值,或者让它从末尾开始(没有return语句)。