天天看點

exit(0)&exit(1)&return

轉自:https://blog.csdn.net/qq_41035588/article/details/81843629

exit()與return的差別:

exit(0):正常運作程式并退出程式,調用時程式運作正常結束;

exit(1):非正常運作導緻退出程式,調用時程式運作非正常結束;

return():傳回函數,若在主函數中,則會退出函數并傳回一值,在其他函數中意味着函數調用完畢,并傳回一個值。

本質上:

  • return傳回函數值,是關鍵字; exit 是一個函數。
  • return是語言級别的,它表示了調用堆棧的傳回;而exit是系統調用級别的,它表示了一個程序的結束。
  • return是函數的退出(傳回);exit是程序的退出。 return是C語言提供的;exit是作業系統提供的(或者函數庫中給出的)。
  • return用于結束一個函數的執行,将函數的執行資訊傳出個其他調用函數使用;exit函數是退出應用程式,删除程序使用的記憶體空間,并将應用程式的一個狀态傳回給OS,這個狀态辨別了應用程式的一些運作資訊,這個資訊和機器和作業系統有關,一般是
  • 0 為正常退出, 非0 為非正常退出。
  • 非主函數中調用return和exit效果很明顯,但是在main函數中調用return和exit的現象就很模糊,多數情況下現象都是一緻的。

示例一:

```powershell
 #include<stdio.h>
  #include<stdlib.h>

  void fun()
  {
     printf("調用return前\n");
     return;//結束此函數的調用
     printf("調用return後\n");
  } 

  int main()
  {
     printf("調用fun函數前\n");
     fun();
     printf("調用fun函數後\n");
     return 0;
  }
           

運作結果:

調用fun函數前
調用return前
調用fun函數後
           

示例二:

#include<stdio.h>
 #include<stdlib.h>

 void fun()
 {
    // printf("調用return前\n");
    // return;//結束此函數的調用
    // printf("調用return後\n");
     printf("調用exit前\n");
     exit(0);
     printf("調用exit後\n");
 } 

int main()
{
    printf("調用fun函數前\n");
    fun();
    printf("調用fun函數後\n");
    return 0;
}
           

運作結果:

調用fun函數前
調用exit前
           

結語

人生就應該exit(0),光明磊落,血氣方剛,在對的時間做對的事,才不枉在世上走一回。
c