(OFF) id60527438 (B) 24 мая в 00:34

return 0;

Приветствую.
Я достаточно давно увлекаюсь программированием, но так... на уровне говнокодинга.
Всегда во всех учебниках встречал, что итогом успешного выполнения функции обычно является return 0;
Но ведь логичнее было бы возвращать 1 в качестве успешного сигнала, так как ноль интерпретируется как "ложь", и ноль возвращать при ошибке, а единицу при успешном выполнении. Таким образом можно конструкцию if сделать более простой и интуитивно понятной:

if(myfunc()) {
// Код, выполняемый в случае успешного выполнения функции если она вернула 1
} else {
// Код, выполняемый в случае ошибки при выполнении функции если она вернула 0
}
Но принято всё совсем наоборот. Так как обычно при успешном выполнении функции возвращают ноль, а при ошибке - единицу, то приходиться усложнять конструкцию if, вроде этого:


if(myfunc() == 0) {
// Код, выполняемый в случае успешного выполнения функции если она вернула 0
} else {
// Код, выполняемый в случае ошибки при выполнении функции если она вернула 1
}
или сначала обрабатывать ошибку, а потом успешное выполнение


if(myfunc()) {
// Код, выполняемый в случае ошибки при выполнении функции если она вернула 1
} else {
// Код, выполняемый в случае успешного выполнения функции если она вернула 0
}
Почему так? Спросил чатЖПТ - она не знает. Сказала мне, что исторически так сложилось и что б я ей не задавал такие вопросы, делай как хочешь... :незнает
Последний раз редактировалось id60527438 24 мая в 00:36

Комментарии (23)

ты видишь на каком языке программирование?
:yuno11
почему ты не понимаешь, что там все! все наоборот!
-2
ответил babycbka888
Зачем ты оставляешь комментарий ради комментария, когда ну точно сказать нечего по существу темы?
а ты зачем? мне это штрыкаешь
:okay11
я ж по теме ответила
:thinks11
чего ты возбудилась?
вобще использование оператора return считается несерьезным, как бы по детски, дофига умные программисты вобще не используют return
Потому что 0 это код результата выполнения программы без ошибок. Так повелось ещё с C++.

Если программа выполняется с ошибкой то возвращается вместо 0 код ошибки.

Касаемо, того, что проще было бы возвращать 1, то возможно, но эти коды существуют для проверки именно для ловцов ошибок.

Т.е. 0 больше ориентирован на подобный код:
function bool hasErrors() {
return myFunc();
}
Ты рофлишь? Return это основной оператор при работе с функциями без него код будет линейным, что довольно плохо в плане проектирования.
но создать программу его не использующую в разы сложней, поэтому такой код и уважают больше, но это из среды програмистких гуру и красоты кода, простому программисту это знать небязательно
Если использовать функции или методы класса без return то мы будем иметь процедурное программирование со спагетти кодом.

Если же говорить о computer science то тру программирование без return, как и без if с for например это кодить на ЯП семейства ассемблера. Там вместо всех операторов есть только move to.
да получается процедурное програмировние, пытался я погиковать когда то таким свособом ничего у меня не вышло, зеленый еще слишком для такого программирования
Показать комментарий
Скрыть комментарий
Назад 1 из 3 Вперёд
Для добавления комментариев необходимо авторизоваться
Назад
Марс
После ошеломляющей новости о находке воды на Марсе...
Тема: Светлая | Тёмная
Версия: Mobile | Lite | Touch | Доступно в Google Play