代码编写完成后有个返回给系统的值,为什么?
比如c语言在最后编写阶段会有个return 0(标准情况),意味着有个返回值返回给系统,我想的是在执行return 之前就已经得出结果(中间不管有复杂),既然有了个结果,那就应该输出结果,那么为何还需要要个返回值给系统?那么为了执行完毕后停止dos系统运行, 还是可能有别的原因?希望详细解释.
29dk89
9 years, 11 months ago
Answers
你说的这是C语言吧,其实有返回值是 C99 的规范吧
在C99之前,c语言main的原型是 void main(), 也就是没人care返回值什么,你操作就得了。 C语言为了使得函数调用返回值和main的一致,规定了main的返回值是一个int类型。对于你来说,你期望它将输出显示到控制台或是屏幕上就OK了,但对于操作系统,有时需要了解程序是否正常运行,因此需要获知返回值。
PS: 在Linux上查看上一个进程退出时的返回值是 echo $?
你会发现不是所有的程序都返回0.
此外,也有些语言没有规定程序的返回值,或者说是声明的时候,声明为void即可,不过楼主可以略过了。。。。
补充下场景,楼主是否可以体会下?
int main(){
try {
foo();
return 0;
}
catch (... )
{
return -1;
}
}
这里用了try...catch来表示异常,正常情况下函数是返回0的,异常为-1. 假设这个进程专门用来serve user的request,另外有一个监视器进程专门检查所有的进程,规则是进程返回0就是正常结束,否则是异常,比如某些资源不可用导致程序无法正常执行等。这种情况下monitor进程是不是可以根据程序的返回值来判断进程是否正常结束?
当然,在实现中,很少人用这种方法来判断一个请求是否完成或进程是否正常结束,所以最简单直观的理解就是把这个理解为一个C99的规范好了。
我已经out了
answered 9 years, 11 months ago