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.pswp.cn/news/258602.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258602.shtml
英文地址,請注明出處:http://en.pswp.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利用這些隨機、凌亂的地址來收集硬盤上的敏感數據。 …