Есть ли разница в return 0
и exit (0)
при использовании в функции? Если да, то когда я должен использовать return 0
или exit (0)
в функции?Различия между «return 0» и «exit (0)»
ответ
return
выходы из функции в то время как exit
выходы из программы.
В main
функции исполняющего return 0;
заявления или вызывающий exit(0)
функции будет вызывать зарегистрированные atexit
обработчик и приведет к завершению работы программы.
Обработчики 'atexit' вызываются при возврате из основного. –
@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
указателя) если код не написан для обработки сбоев распределения.
return
- инструкция, которая возвращает управление обратно на вызывающую функцию .exit
- это системный вызов, который завершает текущий процесс, т.е. исполняемую программу .
В main()
return 0;
и exit(0);
выполняют ту же самую вещь.
ПРИМЕЧАНИЕ: вы должны включить #include<stdlib.h>
.
- 1. exit (0) vs return 0
- 2. Различаются между «return db.SaveChangesAsync()» и «return 0»
- 3. Различия между 0..3 и [0, 1, 2] .iter()
- 4. Различия между/sdcard/emulated/0 и/sdcard
- 5. .NET - Finalizers и exit (0)
- 6. Realm и Runtime.getRuntime(). Exit (0)
- 7. разница между «\ 0» и «\ 0»
- 8. о android Drawable getBounds return Rect (0, 0 - 0, 0)
- 9. Различия между умолчанию (ИНТ) против междунар = 0
- 10. PDO :: lastInsertID return 0
- 11. lstat return <0
- 12. Return 0 on count()
- 13. ajax success return 0
- 14. Что отличаетс между матрицей.size() == 0 и matrix [0] .size() == 0
- 15. C: explain if (exit (0), 0) {} строка кода
- 16. Разница между 0 и -0 в C++
- 17. от NSFetchedResults objectAtIndex: 0 return 0
- 18. SAS can ranuni (0) return 0?
- 19. main: return 0 висит, выход 0 закрывается. Как отлаживать?
- 20. NextValue() return 0
- 21. get_current_user_id() return Zero 0
- 22. C++ - return 0
- 23. Joomla JUser return 0
- 24. mysqli_insert_id return 0
- 25. C: fread return 0
- 26. SystemParametersInfo (SPI_GETFONTSMOOTHINGTYPE) return 0
- 27. Java Substring return 0
- 28. $ stmt-num_rows (Return 0)
- 29. Javascript - .length return 0
- 30. document.getElementsByClassName ("...") [0] return undefined
exit 0? вероятно, не компилируется. exit (0) завершает вашу программу.Вы, вероятно, не хотите этого – FDinoff
Извините за это. Я отредактировал вопрос. – haccks
Существует аналогичный пост здесь http://stackoverflow.com/questions/1116493/how-to-quit-a-c-program – doctorlove