代码编写完成后有个返回给系统的值,为什么?

比如c语言在最后编写阶段会有个return0(标准情况),意味着有个返回值返回给系统,我想的是在执行return之前就已经得出结果(中间不管有复杂),既然有了个结果,那就应该输出结果,那么为何还需要要个返回值给系统?那么为了执行完毕后停止dos系统运行,还是可能有别的原因?希望详细解释.
MYYA
浏览 384回答 2
2回答

慕田峪9158850

你说的这是C语言吧,其实有返回值是C99的规范吧在C99之前,c语言main的原型是voidmain(),也就是没人care返回值什么,你操作就得了。C语言为了使得函数调用返回值和main的一致,规定了main的返回值是一个int类型。对于你来说,你期望它将输出显示到控制台或是屏幕上就OK了,但对于操作系统,有时需要了解程序是否正常运行,因此需要获知返回值。PS:在Linux上查看上一个进程退出时的返回值是echo$?你会发现不是所有的程序都返回0.此外,也有些语言没有规定程序的返回值,或者说是声明的时候,声明为void即可,不过楼主可以略过了。。。。补充下场景,楼主是否可以体会下?intmain(){try{foo();return0;}catch(...){return-1;}}这里用了try...catch来表示异常,正常情况下函数是返回0的,异常为-1.假设这个进程专门用来serveuser的request,另外有一个监视器进程专门检查所有的进程,规则是进程返回0就是正常结束,否则是异常,比如某些资源不可用导致程序无法正常执行等。这种情况下monitor进程是不是可以根据程序的返回值来判断进程是否正常结束?当然,在实现中,很少人用这种方法来判断一个请求是否完成或进程是否正常结束,所以最简单直观的理解就是把这个理解为一个C99的规范好了。

小怪兽爱吃肉

简单来说,所有程序都是某个父进程的子进程,当然老大进程是systemd.而有的时候子进程需要将执行程序的状态报告给父进程,就是通过return值来实现的.比如return0;代表正常,return-1代表遇到某错误,return-2代表另一个错误,等等.而大型程序的错误判断可能有几百个,这些错误随时可能发生,程序自己不知道何时会出岔子,这时候就需要通过返回值来告诉父进程遇到什么错误了,让父进程来依据返回值进行相应的处理,当然也让用户知道了returnvalue,可以查找发生错误的类型
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript