为啥函数返回值:常用0表示成功,-1表示出错( 二 )


因为导致执行失败的原因可以有很多种,同时既可能是事先想到的也可能是没想到的,我们可以把事先想到的结果罗列一个表,这样等我们看到结果的时候马上就能知道任务因为什么而失败。
注意,以上全都是对信号的“开/关”状态人为的“注释”!我们不需要对电脑的电路做任何事情。电脑的处理结果永远都是表示信号状态的0和1的组合,我们通过把这些0和1的组合进行“注释”就实现了函数本身的功能以及判断我们想要通过函数实现的功能是否执行成功。

■网友
因为shell检查运行结果就是认为0是成功,main函数返回值可以在shell中用`$?`取出。

编程是件比较复杂的事情,正确的执行路径是有限的,而错误几乎是无穷的。既然只有一种成功,而有无数种错误,那自然就把成功映射到唯一的0来表示吧,错误用整数还是负数表示呢,看历史传承和看心情。按理,状态只能使用全等于来依次比较,但毕竟底层我们用了数字来表示,可以进行大于小于的比较,何乐而不为呢,就把错误全摆到一侧吧。个数都是0和正数不可能是负数,那把状态标成负数就可取得更好的区隔和扩展性。

另外你看,最开始用这些简单的数字表示状态吧,后来发现这也不太够用啊, 就又在超越函数的层面发明了异常。
编程到底难在哪里?

■网友
我自己强行理解:0--零个错误;非0那就有错误。汇编上用非零指令跳转到错误处理代码很好处理。自己习惯,自己用,不敢代表别人。
■网友
我个人的理解,我想不一定是对的。可能就是错误的。一个函数达到成功目的一定只有“一种”。而失败的原因有许多种。在c语言中,只有0表示假,非零表示真。即假的情况只有一种。而真的情况很多。
■网友
【为啥函数返回值:常用0表示成功,-1表示出错】 题主问的应该是c语言里面的main函数吧?
看到执行结果是 exit with code 0,表示你写的这一坨代码没有问题,可以正常执行,如果执行过程中抛异常、有错误,code后面的数字会改变。
这个是由编译器和调用者决定的,在java里面,main函数的调用者是JVM,代码执行完没有问题也是exit with code 0,有错误的时候code就会改变。
这一点是大家约定成俗的,如果你是自己定义的函数,返回什么表示成功都可以,哪怕你返回X表示成功,返回O表示失败都可以,只要没有人打你就行。

■网友
常用的有两种方式:1、1正确,0不正确。这种是和c语言的true/false、null类型一致的。2、小于0错误,其他正确。这是兼容错误码的表达方式。3、其他有几种,都是自己约定的。


推荐阅读