C/C++ code
int
fun(
int
x){
if
(x
==
0
)
return
0
;
else
return
1
;
}
int
main(){
int
i
=
100
;
if
(fun(i)
>
0
)
printf(
"
傳回大于0的值\n
"
);
return
0
;
//
這個0,告訴作業系統,程式運作成功
}
return和exit有差別:
1,exit用于在程式運作的過程中随時結束程式,exit的參數是傳回給OS的。main函數結束時也會隐式地調用exit函數。exit函數運作時首先會執行由atexit()函數登記的函數,然後會做一些自身的清理工作,同時重新整理所有輸出流、關閉所有打開的流并且關閉通過标準I/O函數tmpfile()建立的臨時檔案。exit是結束一個程序,它将删除程序使用的記憶體空間,同時把錯誤資訊傳回父程序,而return是傳回函數值并退出函數
2,return是語言級别的,它表示了調用堆棧的傳回;而exit是系統調用級别的,它表示了一個程序的結束。
3,exit函數是退出應用程式,并将應用程式的一個狀态傳回給OS,這個狀态辨別了應用程式的一些運作資訊。
4,和機器和作業系統有關一般是 0 為正常退出 非0 為非正常退出
5,void exit(int status);
6,atexit()函數的參數是一個函數指針,函數指針指向一個沒有參數也沒有傳回值的函數。atexit()的函數原型是:int atexit (void (*)(void));在一個程式中最多可以用atexit()注冊32個處理函數,這些處理函數的調用順序與其注冊的順序相反,也即最先注冊的最後調用,最後注冊的最先調用。
一般程式執行到 main() 的結束就完成了, 如果想在程式結束時做一些事情, 可以嘗試着用這個函數.
example:
#include
#include
void f1(void)
{
printf("exit f1\n");
}
void f2(void)
{
printf("exit f2\n");
}
int main()
{
atexit(f1);
atexit(f2);
printf("exit main\n");
return 0;
}