C++ exit 与 return 浅析

原创 2015年07月07日 17:35:58
【摘要】
本文从代码形式,常用方式,相关概念,调用关系和比较分析,这5个维度浅析 exit 与 return 在C++的相同点与区别。


【常见形式】

exit(0):   正常运行程序并退出程序;
exit(1):   非正常运行导致退出程序;
return( ):返回函数,若在主函数中,则会退出函数并返回一值。

【相关概念】
  • return 语句可被用来使正在执行分支程序返回到调用它方法。表示中止当前函数的运行,并将操作权返回给调用者,如果是在main函数中,表示将操作权返回给操作系统。    
如果符合某个条件要退出的话,可以用return返回,否则可以不写这句代码的,当程序执行到“}”时会自动返回,这个问题其实你自己到机器上试一下就知道了。不过作为一个良好的编程习惯,每个函数都有返回语句倒是对的,这样更有可读性,并利于程序的维护 !
return 指令一个是返回一个指定数据给主调函数,另外的一个作用就是 结束 所在函数的执行,return 不是必须要返回一个值。

  • exit()函数用于在程序运行的过程中随时结束程序,exit的参数state是返回给操作系统,返回0表示程序正常结束,非0表示程序非正常结束。main函数结束时也会隐式地调用exit函数。exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新 所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文件。

【另】

每个进程都会有一个返回值的,进程开始时是由系统的一个启动函数掉用了main函数的:   
int nMainRetVal = main(); 
当从main函数退出后,启动函数便调用exit函数,并且把nMainRetVa传递给它。所以,任何时候都会调用exit函数的,正常情况下,main函数不会调用exit函数的,而是由return 0; 返回值给nMainRetVal的,exit再接收这个值作为参数的。所以,正常情况下是以exit(0)退出的。
如果,你程序发生异常,你可以在main函数中调用exit(1),强制退出程序,强制终止进程。非0表示不正常退出。

【比较分析】
1、return返回函数值,是关键字;exit是一个函数。
2、return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。
3、return是函数的退出(返回);exit是进程的退出。
4、return是C语言提供的,exit是操作系统提供的(或者函数库中给出的)。
5、return用于结束一个函数的执行,将函数的执行信息传出个其他调用函数使用;exit函数是退出应用程序,删除进程使用的内存空间,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息,这个信息和机器和操作系统有关,一般是0为正常退出,非0为非正常退出。
6、非主函数中调用return和exit效果很明显,但是在main函数中调用return和exit的现象就很模糊,多数情况下现象都是一致的。
版权声明:

相关文章推荐

C++:Windows下return,exit和ExitProcess的区别和分析

转自:http://www.cnblogs.com/jcss2008/archive/2009/03/18/1415519.html通常,我们为了使自己的程序结束,会在主函数中使用return或调用e...

C/C++语言函数学习(1):atexit、exit、return

/*stdlib.h *void exit(int status); *功 能:终止程序 *int atexit(void (*func)(void)); *功 能: 注册终止函数,在ma...

【iOS-Cocos2d游戏开发之十二】浅析使用C++/C/OC进行iOS游戏混编出现“failed with exit”问题与小结;

Himi  原创, 欢迎转载,转载请在明显处注明! 谢谢。          原文地址:http://blog.csdn.net/xiaominghimi/article/detai...
  • Jerke
  • Jerke
  • 2012-02-21 15:46
  • 202

【iOS-Cocos2d游戏开发之十二】浅析使用C++/C/OC进行iOS游戏混编出现“failed with exit”问题与小结;

李华明Himi 原创,转载务必在明显处注明:转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-cocos2d/478.html     大家都...

【iOS-Cocos2d游戏开发之十二】浅析使用C++/C/OC进行iOS游戏混编出现“failed with exit”问题与小结;

大家都知道Xcode中支持C、C++、Object-C3种语言的混编,在上一节Box2d中介绍过cocos2d封装的box2d是c++源码实现的,那么如果想让编译器混编,只需要将实现类的".m"格式修...

delphi exit类似C return

  • 2014-09-04 12:30
  • 28KB
  • 下载

exit和abort及return的区别

  • 2013-08-29 16:21
  • 233KB
  • 下载

解释return和exit()的区别

return是语言级别的,它表示了调用堆栈的返回;return( )是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用。在多个进程时。如果有时要检测上...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)