在函數中使用時,return 0
和exit (0)
之間是否有區別? 如果是的話,我應該在什麼時候使用return 0
或exit (0)
?「return 0」和「exit(0)」之間的區別
回答
return
退出該功能,而exit
退出程序。
在main
函數執行return 0;
聲明或調用exit(0)
函數將調用註冊atexit
處理程序,並會導致程序終止。
'atexit'處理程序在從main返回時也會被調用。 –
@CarlNorum感謝您的更正,我更新了我的答案。 – ouah
是的,因爲沒有名爲exit
的聲明。我想你的意思是函數exit
?
在這種情況下,有一個大區別:exit
函數退出進程,換句話說程序被終止。 return
聲明只是從當前函數返回。
它們只有在main
函數中使用時才相似。
exit 0
是C中的語法錯誤。您可以使用exit(0)
而不是對標準庫函數的調用。
函數exit
將退出整個程序,並將提供的退出代碼返回給操作系統。而return
語句只是退出當前函數給調用者指定的結果。
它們僅在main
中使用時才相同(因爲退出main
函數會終止程序)。
通常情況下,exit
僅適用於您想終止程序的緊急情況,因爲沒有明智的方法來繼續執行。例如:
//
// Ensure allocation of `size` bytes (will never return
// a NULL pointer to the caller).
//
// Too good to be true? Here's the catch: in case of memory
// exhaustion the function will not return **at all** :-)
//
void *safe_malloc(int size) {
void *p = malloc(size);
if (!p) {
fprintf(stderr, "Out of memory: quitting\n");
exit(1);
}
return p;
}
在這種情況下,如果功能a
調用函數b
調用函數c
調用my_malloc
你可能要退出當場而不是返回到c
錯誤代碼的程序(如NULL
指針)如果代碼沒有寫入來處理分配失敗。
- 1. str [0]和str.charAt(0)之間的區別
- 2. srand(1)和srand(0)之間的區別
- 3. 基數「*」和「0 .. *」之間的區別 - UML
- 4. Array.length = 0和Array = []之間的區別?
- 5. next()和next().CharAt(0)之間的區別;
- 6. LinearRegression()和Ridge(alpha = 0)之間的區別
- 7. $ 0和$ SHELL之間的區別
- 8. {0}和「」之間有什麼區別?
- 9. BigDecimal(「0」)和BigDecimal.ZERO之間有區別嗎?
- 10. {0}和+之間有什麼區別?
- 11. firstChild和[0]之間有什麼區別?
- 12. strlen()== 0和empty()之間有區別嗎?
- 13. 字符串中的[0]和&a [0]之間的區別
- 14. PHP中的$ a = 0和$ a ='0'之間的區別
- 15. list.First(),list.ElementAt(0)和list [0]之間的區別?
- 16. virtual void funcFoo()const = 0和virtual void funcFoo()= 0之間的區別;
- 17. [0-9] +和[0-9] ++之間的區別是什麼?
- 18. exit和quick_exit之間的區別
- 19. pthread_exit()和exit()之間的區別?
- 20. `[blah addObject:@「1」];``和`[blah insertObject:@「0」atIndex:0]之間有什麼區別;`?
- 21. 之間有什麼區別{0}和{0,數字,整數}
- 22. (char)0和'\ 0'之間有什麼區別? in C
- 23. 「#if Foo - 0 == 0」和「#if defined(Foo)&& Foo == 0」之間的區別是什麼?
- 24. `return line,```return line`之間的區別
- 25. Return和Break之間的區別語句
- 26. 'return'和'pure'之間的區別
- 27. '$ generator`和`return $ generator`之間的區別?
- 28. wordpress插件ajax調用響應-1和0之間的區別
- 29. matrix.size()和matrix [0] .size()之間的區別是什麼
- 30. 什麼是char *海峽之間的區別是零和STR [0] ==「\ 0」
exit 0?可能不會編譯。退出(0)退出您的程序。你可能不想那 – FDinoff
對不起,我編輯了這個問題。 – haccks
還有一個類似的帖子在這裏http://stackoverflow.com/questions/1116493/how-to-quit-a-c-program – doctorlove