Обоснование возврата 0 в качестве значения по умолчанию в C / C ++ - PullRequest
15 голосов
/ 01 декабря 2008

Есть ли причина, по которой ноль используется в качестве возвращаемого значения функции «по умолчанию»? Я заметил, что некоторые функции из stdlib и почти везде, когда не возвращают правильное число (например, pow (), strcpy ()) или ошибку (отрицательные числа), просто возвращают ноль.

Мне просто стало любопытно увидеть несколько тестов, выполненных с отрицательной логикой. Очень запутанно.

Почему бы не вернуть 1, или 0xff, или любое положительное число по этому вопросу?

Ответы [ 13 ]

0 голосов
/ 01 декабря 2008

Помимо всех тонких замечаний предыдущих авторов, он также значительно очищает код, когда функция возвращает 0 в случае успеха.

Рассмотрим:

if ( somefunc() ) {
   // handle error
}

намного чище, чем:

if ( !somefunc() ) {
   // handle error
}

или

if ( somefunc() == somevalue ) {
   // handle error 
}
0 голосов
/ 01 декабря 2008

Это потому, что при использовании из оболочки UNIX команда, которая возвращает 0, указывает на успех.

Любое другое значение указывает на сбой. Как указывает Пол Беттс, положительные и отрицательные значения определяют, где, вероятно, возникла ошибка, но это всего лишь соглашение, а не абсолют. Пользовательское приложение может вернуть отрицательное значение без каких-либо плохих последствий (кроме того, что оно указывает оболочке, что приложение не удалось).

0 голосов
/ 01 декабря 2008

Поскольку в C / C ++ 0 равно false и равно нулю, вы можете использовать удобные сокращения, когда это произойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...