C++ exit 与 return 浅析

【摘要】
本文从代码形式。经常使用方式,相关概念,调用关系和比較分析,这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返回函数值,是keyword;exit是一个函数。


2、return是语言级别的。它表示了调用堆栈的返回;而exit是系统调用级别的。它表示了一个进程的结束。


3、return是函数的退出(返回);exit是进程的退出。


4、return是C语言提供的,exit是操作系统提供的(或者函数库中给出的)。
5、return用于结束一个函数的运行,将函数的运行信息传出个其它调用函数使用;exit函数是退出应用程序。删除进程使用的内存空间,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息,这个信息和机器和操作系统有关,通常是0为正常退出。非0为非正常退出。
6、非主函数中调用return和exit效果非常明显。可是在main函数中调用return和exit的现象就非常模糊。多数情况下现象都是一致的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Feature Pyramid Networks for Object Detection 总结

最近在阅读FPN for object detection,看了网上的很多资料,有些认识是有问题的,当然有些很有价值。下面我自己总结了一下,以供参考。 1. FPN解决了什么问题? 答: 在以往的faster rcnn进行目标检测时,无论…

最近工作

最近的工作忙且乱,以至于,我第天早晨早早起来到晚上11点多才能回到家。今天早晨写代码的时候腰突然猛疼,疼的我直叫唤。躺在床上半天起不来。 最近每天的工作要计划一下了,不能客户说干嘛就干嘛,这样累坏了自己&#x…

LeetCode OJ - Candy

题目: There are N children standing in a line. Each child is assigned a rating value. You are giving candies to these children subjected to the following requirements: Each child must have at least one candy.Children with a higher rating get mor…

那些 IT 界的神翻译,原来我学不好编程的原因就在这

近日博主 ruanyf 在网上发布了一条关于套接字“socket”的解释,引发了网友对于那些 IT 界的神翻译的讨论: 突然想到,socket就是插座。服务器的socket,就是服务器提供插座,等着客户端的插头插进来。一旦插入完成&#x…

navicat 结构同步会加锁吗_被柜员怠慢的张小波,真的会永久地转走几个亿的结构性存款吗?...

4月7日下午,北京凤凰联动文化传媒有限公司总裁张小波发布微博称,前几天去安贞附近一银行,想把借记卡的转帐额度从每天五百万上调一下,没有想到,在其问到“最高可调到多少”时,柜员回答一个亿并“鄙夷地看了…

Mask RCNN笔记

mask rcnn简介 mask rcnn是何凯明基于以往的faster rcnn架构提出的新的卷积网络,一举完成了object instance segmentation. 该方法在有效地目标的同时完成了高质量的语义分割。 文章的主要思路就是把原有的Faster-RCNN进行扩展,添加一个分支使用现有的检…

IOS开发之----常用函数和常数--秀清

介绍一下Objective-c常用的函数,常数变量 算术函数 【算术函数】函数名说明int rand()随机数生成。(例)srand(time(nil)); //随机数初期化int val rand()P; //0~49之间的随机数int abs(int a)整数的绝对值(例&#…

网页设计中常用的19个Web安全字体

来自http://www.jb51.net 在Web编码中,CSS默认应用的Web字体是有限的,虽然在新版本的CSS3,我们可以通过新增的font-face属性来引入特殊的浏览器加载字体。但多数情况下,考虑各个因素的影响我们还是在尽量充分利用这些默认调用的字…

python slice是共享内存吗_python共享内存实现进程通信

1.概述共享内存可以说是最有用的进程间通信方式.两个不同的进程共享内存的意思是:同一块物理内存被映射到两个进程的各自的进程地址空间.一个进程可以及时看到另一个进程对共享内存的更新,反之亦然.采用共享内存通信的一个显而易见的好处效率高,因为进程可以直接读写内存,而不需…

FCN-数据篇

从本篇开始,我们来记录一下全卷积网络用来做语义分割的全过程。 代码:https://github.com/shelhamer/fcn.berkeleyvision.org 下面我们将描述三方面的内容: 1. 官方提供的公开数据集 2. 自己的数据集如何准备,主要是如何标注…

深圳本地网店代运营公司

◆★◆深圳本地网店代运营,淘宝代运营多少钱,微博运营公司,代运营平台,天猫京东代运营,网站代运营图 片, 北京京东代运营,网店代运营协议,京东店铺代运营,网站代运营服务…

搜索专题题解

题目链接: codeforces 277A - Learning Languages 题目描述: 一个团体有n个人,每个人都掌握了一些语言,每个人学一门语言有1个花费,两个人之间可以通过其他人的翻译,问最少花费多少使得这个团体的任意两个人…

Facebook 开源的快速文本分类器 FastTex

FastText是Facebook开发的一款快速文本分类器,提供简单而高效的文本分类和表征学习的方法,性能比肩深度学习而且速度更快。 fastText 原理fastText 方法包含三部分:模型架构、层次 Softmax 和 N-gram 特征。下面我们一一介绍。 1.1 模型架构 …

FCN-加载训练与测试数据

当我们生成了数据后,我们来看看FCN是如何加载数据的。 FCN 代码预览 其中: - data : 训练测试数据 - ilsvrc-nets:存放预训练的模型 - 剩下的框:不同数据集的训练测试prototxt - voc_layers,siftflow_layers等&am…

怎么撤销定时说说_已注册商标遇到撤三申请怎么办

很多企业的商标都遇到过商标撤三的情况,撤三简单的说就是,注册商标没有正当理由连续三年不使用的,任何单位或者个人可以向商标局申请撤销该注册商标。所以说,无论您的企业多大,商标持有的再多,也要做好商标…

windows下架设SVN服务器并设置开机启动

1、安装SVN服务器,到http://subversion.apache.org/packages.html上下载windows版的SVN,并安装,在命令行下运行svn命令,如下所以,则svn服务器安装成功。 C:\Documents and Settings\Administrator>svn 使用“svn …

Spartan-6 FPGA SelectIO Resources User Guide 笔记2 SelectIO Attributes/Constraints

1.Location Constraint 用于分配I/O端口 NET <I/O_NAME> LOC "<EXTERNAL_PORT_IDENTIFIER>"; Example: NET MY_IO LOCR7; 2.IOSTANDARD Attribute 用于选择IO标准如LVCMOS25&#xff0c;LVDS_25等 NET <I/O_NAME> IOSTANDARD”<IOSTANDARD V…

python合并pdf 加书签_Python生成pdf目录书签的实例方法

有时候我们用的一些pdf资料是没有目录的&#xff0c;这样找寻我们想到的东西比较麻烦。本篇文章就为大家带来python来生成pdf目录书签的方法。首先&#xff0c;我们需要下载一个软件FreePic2Pdf,利用它我们可以将我们的pdf文件导入书签工具下载&#xff1a;https://www.jb51.ne…

正则表达式及其在python上的应用

今天学习了一早上正则表达式。如下内容部分转载自《读懂正则表达式就这么简单》 一、什么是正则表达式 正则表达式是一种特殊的字符串模式&#xff0c;用于匹配一组字符串&#xff0c;就好比用模具做产品&#xff0c;而正则就是这个模具&#xff0c;定义一种规则去匹配符合规…

安全专家在硬盘固件中发现NSA的网络间谍程序

本周安全专家在硬盘固件中发现了美国国家安全局&#xff08;NSA&#xff09;的网络间谍程序&#xff0c;这些程序非常难以被检测或者删除。来自卡巴斯基的研究者公布了该恶意程序用来“Phone Home”的URL地址&#xff0c;NSA利用这些随机、凌乱的地址来收集硬盘上的敏感数据。 …