【问题标题】:Use of return in a program在程序中使用 return
【发布时间】:2017-08-12 05:05:15
【问题描述】:

在 int main() 块中编写代码块时,为什么要使用

返回 0;

我知道这是因为它告诉操作系统代码运行成功。 但即使我使用 return 1、return 38 或类似的东西,如果我的程序仍然成功运行,它对我有什么影响。 数字 0 有什么用,那么如果任何数字 x 都可以做到这一点?

【问题讨论】:

  • 操作系统(而不是编译器)可以使用返回值来报告程序的退出代码,或采取进一步的措施。
  • 因为 0 表示successful exit.
  • @Weather:感谢您提供的信息。
  • @Eren 但是我的程序即使返回 15 也能成功运行; .return 0 如何改变它?
  • @AnujSingh 这只是一个约定。您可以返回 15 ,但这会让阅读您的代码的人感到困惑。它实际上也可能导致问题,具体取决于您运行它的环境。

标签: c mingw


【解决方案1】:

在许多环境中,从main() 传回的返回值可以被运行您的程序的任何程序访问。例如,您可以在bash 中通过执行类似操作($? 是保存最后一个程序的返回码的bash 特殊变量 - 它实际上比您执行管道时要复杂一些,但我们'为了这个问题的目的,我会保持简单):

myProgram
if [[ $? -ne 0 ]] ; then
    echo "Something went horribly wrong"
fi

因此,这是向“外界”表明您的程序成功与否的好方法。

对于我们当中的语言律师,它首先在5.1.2.2.3 Program termination /1 中介绍(针对C11)(我的重点):

如果main函数的返回类型是与int兼容的类型,初始调用main函数的返回相当于调用exit函数的值由main 函数作为其参数返回; 到达终止main 函数的} 返回值0。

7.22.4.4 The exit function /5 部分涵盖了exit 的行为,因为它与实际完成执行有关:

最后,控制权返回到宿主环境。如果 status 的值为 0 或 EXIT_SUCCESS,则返回实现定义的状态成功终止形式。如果status的值为EXIT_FAILURE,则返回一个实现定义的状态不成功终止形式。否则返回的状态是实现定义的。

【讨论】:

    【解决方案2】:

    任何不为零的值都是程序异常结束或出错的标志。对于独立程序来说,这并不重要,因为这段代码经常被忽略。但是,当在第三方软件、操作系统、脚本或 shell 中调用时,这可以用于错误处理。

    参考类似的问题。 So what does "return 0" actually mean?

    还引用了一个 Quora 问题: https://www.quora.com/What-does-return-1-do-in-a-program-in-C

    【讨论】:

      猜你喜欢
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-04
      • 1970-01-01
      • 2019-08-18
      • 1970-01-01
      • 2012-10-24
      相关资源
      最近更新 更多