在C程序中,为什么要从main()函数返回0?

6

在编写C/C++程序时,特别是使用最新的编译器时,为什么需要从main()方法返回一个整数?例如:int main() 并且我们从中返回 "return 0"。那么,这背后的确切原因是什么呢?


3
为了表明该函数以正常方式退出。 - devnull
请参考以下链接:https://dev59.com/7HVC5IYBdhLWcg3wtzkQ - Brian Bi
返回值被称为“程序终止状态”(应由父进程读取),而不是返回0或1。您应该使用return EXIT_SUCCESSEXIT_FAILURE返回,并使用这些值调用exit,例如exit(EXIT_FAILURE);。如果子进程的终止状态失败,则父进程可能需要执行一些清理工作。 - Grijesh Chauhan
请记住,在Stack Overflow上,您只能接受一个答案!是的,您可以投票支持所有答案。 - Grijesh Chauhan
5个回答

14

main()的返回值成为进程的退出状态。传统上,退出状态为零通常表示“OK”,而任何非零值表示某种错误。 这类似于许多系统调用同样返回零或错误代码。

更多信息可以参考J. Leffler对这个类似问题的史诗般的回答:C和C ++中main()应该返回什么?


8
正如你所说,main()被声明为int main()。操作系统期望返回一个整数,这样它就知道下一步该怎么做,特别是如果另一个程序或脚本调用了你的程序。0表示“没有错误”。其他任何值都表示发生了错误。

4

main()函数返回的整数值(如果有的话)是程序返回给“系统”的值。从main()函数返回0表示成功,非零值表示失败。如果没有返回值,系统将接收到一个表明成功完成的值。


4

该指令会向操作系统返回0,表示您的程序已成功执行。


4
不,操作系统不会关心程序返回什么,它只是存储并提供给已执行此程序或脚本的其他程序,如果需要,它们可以读取并使用这些返回值。 - phuclv

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接