Подтвердить что ты не робот

Должен ли я вернуть 0 или 1 для успешной работы?

Возможный дубликат:
Обработка ошибок в C-коде
Какое возвращаемое значение вы должны использовать для неудачного вызова функции в C?

Я всегда использую 0, но его не очень читаем в if, while и т.д.

Должен ли я вернуть 1? Почему главная функция возвращает 0 для успеха?

4b9b3361

Ответ 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;
}