本文從代碼形式。經常使用方式,相關概念,調用關系和比較分析,這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的現象就非常模糊。多數情況下現象都是一致的。