本文從代碼形式,常用方式,相關概念,調用關系和比較分析,這5個維度淺析 exit 與 return 在C++的相同點與區別。
【常見形式】
exit(0): 正常運行程序並退出程序;
exit(1): 非正常運行導致退出程序;
return( ):返回函數,若在主函數中,則會退出函數並返回一值。
如果符合某個條件要退出的話,可以用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的現象就很模糊,多數情況下現象都是一致的。