使用回报; 对于初学者,从不同的角度来看c ++

use*_*057 4 c++ return

我刚刚开始编程,我已经开始听到标准初学者对"主要使用返回值"的定义,但它没有达到我想要理解的程度.所以,是的,'int main'的返回值0例如表示程序运行成功,因为main是int数据类型,0反映了这一点.

但这有什么意义呢?计算机是否已经知道代码是否成功?当然,我们可以编写一个有缺陷的代码,然后返回0,按照这个逻辑,我们(程序员)说这个代码是正确的,但编译器实际上执行程序,如果它是错误的/有缺陷的,它根本无法对它进行操作.

请使用初学者可以理解的解释.

JVA*_*pen 7

你的程序的返回代码不是关于崩溃,而是关于功能性的失败.

例如,程序grep将退出/失败代码0定义为成功找到,将1定义为未找到.值2用于无效输入.

在脚本中,这可以用于某些自动逻辑,而无需用户需要用户来解释结果.

由于您是初学者,我建议您始终返回零,因为您专注于如何学习语言.了解应用程序如何通过退出代码相互连接,增加了不必要的干扰/复杂性.


Bas*_*tch 6

程序可能会失败,因为某些期望未得到满足.

例如,main 当其中一个参数不是有效文件名,或者由于某些原因导致无法打开该文件时,计算作为参数传递的文件中的行数的程序将失败.如果您编写这样的程序,则需要为此明确添加一些程序逻辑(即几个或多个源代码行).一个优秀的程序员不允许他的程序崩溃(即使错误或缺少输入或参数).

将源文件复制到目标的简单程序需要两个参数.如果main没有给出两个参数,它应该失败.如果第一个参数没有命名有效且可访问的文件,则程序也应该失败.如果由于某个磁盘已满而无法实现复制,则该程序也应该失败.

main实际上,返回是一些任意整数.在Linux和许多POSIX系统上,它应该是0到255之间的某个整数(0表示"成功执行",其他退出值表示失败).请参阅exit(3)waitpid(2)了解更多信息.

通过一些约定(你需要记录)失败代码(实际上它们很少,通常少于十几个,通常是0个名字EXIT_SUCCESS- 成功时和1个名字EXIT_FAILURE- 失败时)可以告诉失败原因.有关tar(1),coreutils程序,grep(1)等的文档,请参阅示例.

BSD Unix一样在定义一些约定sysexits(但Linux程序一般不使用).

Shell脚本可以轻松测试和处理退出代码.

阅读有关Unix哲学的内容.成功的命令行程序(例如cp(1))通常可以保持沉默.错误消息将按照惯例传递给stderr.

正如你所了解C语言编程,你就会明白,约定一个重要不少(并记录他们来说,这是很重要的).研究一些现有自由软件程序的源代码,例如在github上.

请记住,您不是主要为计算机编写代码,而且主要是针对此人(可能是几个月内,也许是您公司工作的未来开发人员,当您将成为专业开发人员时)必须改进你的代码....