【问题标题】:Why return 0 from main() in a C program? [duplicate]为什么在 C 程序中从 main() 返回 0? [复制]
【发布时间】:2014-02-25 00:35:46
【问题描述】:

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

【问题讨论】:

  • 以表示函数正常退出
  • 返回值被称为'Program termination status'(应该被父进程读取),而不是返回01你应该return EXIT_SUCCESSEXIT_FAILURE并用这些值调用exit作为exit(EXIT_FAILURE);。说如果子进程终止状态失败,那么父进程可能需要做一些清理工作
  • 请记住,在 Stack-overflow,您只能接受 一个 的答案!是的,您可以对所有答案进行投票。

标签: c++ c


【解决方案1】:

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

更多信息请参阅 J. Leffler 对此的史诗般的回答,类似的问题:What should main() return in C and C++?

【讨论】:

    【解决方案2】:

    正如你所说,main() 被声明为int main()。操作系统期望返回一个整数,因此它知道下一步该做什么,尤其是当另一个程序或脚本调用您的程序时。 0 表示“没有错误”。任何其他都意味着发生了错误。

    【讨论】:

      【解决方案3】:

      它返回 0 给操作系统,告诉操作系统你的程序执行成功。

      【讨论】:

      • 不,操作系统不会关心程序返回什么,它只是存储它并提供给其他已经执行过这个程序的程序或脚本,如果需要的话,他们可以自己阅读它来使用
      【解决方案4】:

      main() 返回的 int 值(如果有)是程序返回给“系统”的值。 main() 中的零值表示成功。非零值表示失败。如果没有返回值,系统会收到一个成功完成的值。

      【讨论】:

        【解决方案5】:

        Why default return value of main is 0 and not EXIT_SUCCESS?

        main() 返回零与您所做的基本相同 问。从main() 返回零不必将零返回到 宿主环境。

        来自 C90/C99/C++98 标准文档:

        如果 status 的值为 0 或 EXIT_SUCCESS,则 状态成功终止的实现定义形式是 返回。

        也就是说,具体的值表示成功。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-06-18
          • 1970-01-01
          • 2012-01-30
          • 2012-08-09
          • 2019-12-15
          • 2011-05-10
          • 2017-06-13
          • 2011-02-04
          相关资源
          最近更新 更多