0

在 C/C++ 语言循环语句中,我们使用 exit(0)、exit(1) 或其他值。该值需要什么,退出循环时该值在循环中的作用是什么,exit()中的1和0是什么意思?

4

9 回答 9

9

exit() 将终止进程,而不是循环。对于参数,它是退出状态(0,EXIT_SUCCESS,EXIT_FAILURE):http ://www.opengroup.org/onlinepubs/000095399/functions/exit.html

一个建议:您应该在询问之前搜索并阅读函数或语言特性的文档。

于 2010-02-12T14:22:18.320 回答
4

您不使用 exit() 退出循环。exit 将退出您的整个程序。

您提供给退出函数的数字将是您程序的退出代码。

通常,退出值为 0 表示程序成功完成。

非零值通常是程序的错误标识符,用于指示

  1. 程序失败
  2. 该数字通常表示失败的原因
于 2010-02-12T14:24:02.887 回答
1

嗯……不,你大错特错了。

在 Cish 中,exit终止整个程序。如果您只想停止循环,请使用break. 如果要停止当前循环迭代并继续下一个循环,请使用continue.

提供给的exit值作为整个程序的退出值返回(就像您return从 main 中编辑了该值一样)。操作系统对该值的处理取决于操作系统。它的含义也或多或少取决于您,尽管某些操作系统将除 0 以外的任何内容定义为各种实用程序的错误。

于 2010-02-12T15:37:25.273 回答
1

终止语言循环的常用语句是:breakcontinuegotoreturn和。还有其他可以退出循环的函数,但您可以自己研究它们。 throwexit

break语句退出最近的循环。循环结束后继续执行。

continue语句导致执行从循环的顶部开始。之后的语句continue将不会被执行。这可能会也可能不会退出循环,具体取决于您的迂腐。

goto语句可用于退出循环。在循环之外放置一个标签并使用goto.

return语句将退出函数。如果函数是main,它将终止程序。

throw语句将退出循环和当前函数。如果没有找到相关语句,则在最近的catch语句处继续执行或终止程序catch

exit函数将退出循环并终止程序。传递给的值exit将在程序终止后传递给操作系统。一些操作系统允许在脚本中使用程序的返回值。0 和 1 的值exit取决于操作系统;有些使用 0 表示成功终止。其他值可能会给出终止的原因。

退出循环的其他方法,有些取决于未定义行为的实现:

  1. 满足循环的终止条件。
  2. 除以零。
  3. 取消引用空指针。
  4. 负数的平方根。
  5. 计算没有终止 NUL 字符的 C 字符串的长度。

如果你澄清你的问题,你会得到更好的答案。

于 2010-02-12T17:30:02.243 回答
0

冒着听起来多余的风险,它是进程的退出代码。通常,您可以定义一系列值来指示不同程度的成功或失败。传统上,0 是成功,1(或只是非零)是失败。然后调用您的程序或函数可以检查该值(如果它如此倾向于)并从中收集一些关于您的过程是否成功的想法。

例如,您可以有一个程序将文件从位置 A 复制到 B。如果由于位置 B 被写保护而无法复制文件,则可以返回 -1,并且任何其他使用您的文件作为步骤的程序在它的过程中现在知道你失败了,并且期望位置 B 的文件是完整且可访问的是一个坏主意。

于 2010-02-12T14:22:43.967 回答
0

如果您使用 exit() 函数,您不关心是否处于循环中。它将退出程序并返回给定的整数作为返回值。

C/C++ 中没有循环返回值或类似的东西。

于 2010-02-12T14:23:08.073 回答
0

该值仅在外部程序要使用它来确定程序是否成功运行时才重要。通常,成功运行的程序返回 0 或更大,如果失败则返回 -1。

于 2010-02-12T14:23:22.607 回答
0

您可能会感到困惑return(x)并且exit(x). return将信息发送回调用函数,exit关闭整个进程,为启动进程的环境提供退出状态(如果有)。C 中函数返回的值通常是错误值,但它们的含义取决于过程的语义;的含义exit取决于环境的语义。

把它想象成一艘船;return就像给直接主管的信息,可能会说明为什么今天不能清理甲板,以及为什么放弃该项目;exit是一条塞在瓶子里的信息,用来描述船沉没的原因和方式。

于 2010-02-12T15:49:48.613 回答
0

出于歇斯底里的……对不起,历史的……原因。

回到 Unix 时代,仍然在 Linux、Windows 等中,您的程序不只是单独运行 - 它从某个地方(另一个程序,shell(bash 等,dos 提示符等)调用,他们可能想要要知道它是否成功......

于 2010-02-12T14:24:40.217 回答