Должен ли я вернуть 0 или 1 для успешной работы?
Возможный дубликат:
Обработка ошибок в C-коде
Какое возвращаемое значение вы должны использовать для неудачного вызова функции в C?
Я всегда использую 0, но его не очень читаем в if, while и т.д.
Должен ли я вернуть 1? Почему главная функция возвращает 0 для успеха?
Ответы
Ответ 1
Он определяется стандартом C как 0 для успеха (кредиты идут на hvd).
Но
Для большей переносимости вы можете использовать макросы EXIT_SUCCESS и EXIT_FAILURE для обычного значения статуса для успеха и неудача, соответственно. Они объявлены в файле stdlib.h.
(я говорю о значении, возвращаемом ОС из основного, выходного или аналогичных вызовов)
Что касается вашей функции, верните то, что вы пожелаете, и сделайте код более читабельным, если вы держите его так же, как и ваши программы.
Ответ 2
Причина, по которой main
использует 0 для успеха, заключается в том, что она используется в качестве кода выхода приложения к операционной системе, где 0 обычно означает успех, а 1 (или выше) означает сбой. (Конечно, вы всегда должны использовать предопределенные макросы EXIT_SUCCESS
и EXIT_FAILURE
.)
Внутри приложения, однако, более естественно использовать нуль для отказа и ненулевой для успеха, так как возвращаемое значение может быть непосредственно использовано в if
, как в:
if (my_func())
{
...
}
Ответ 3
Если вы возвращаете логический статус, вы можете ввести typedef a int
и использовать это. Это делает возвращаемый тип ваших функций очевидным, и вам (и другим) не придется проверять, правильно ли он возвращает 0 или 1.
typedef int BOOL;
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
BOOL myfunc()
{
...
return TRUE;
}