Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Что такое return. Объясните по простому, уже несколько статей и видеоуроков посмотрел, но так и не могу понять.

WinRAR Мыслитель (5877), закрыт 7 лет назад
Что значат

return 0
return -1
return a+b
________
Что значит возвращает значение? Чем возвращает отличается от выводит на экран?

в main в конце пишет return 0, но если в теле main написано printf("Hello World"), то на экран выведется Hello World, а не ноль. В таком случае куда возвращается этот самый ноль?

С другой стороны, если написать return a+b, то произойдет сложение а и b.
Что-то я запутался
Лучший ответ
Алекс Куха Высший разум (446924) 7 лет назад
Может вам ещё рано. Просто подождите и со временем полученная информация усвоится и вы поймёте наконец то, что вас мучает. Мне вот как-то тяжело даже стараться что-то ещё добавить к тому, что вы уже прочитали. Уверен, что те люди имели и дар объяснения и знания по теме.
Единственное, могу сказать, что вы, возможно путаете разные вещи.
нпрм общий вид команды return [выражение, возвращающее значение].
rerurn 0 и return 5-5+5-5+5-5 - одно и то же.
Теперь определяемся с тем, куда возвращается значение. Если это ф-я в программе, то она ничем не отличается от игрека в математике. у=f(x1,x2,x3,...xn). Разница разве в том, что в математике f - достаточно (обычно, достаточно f1,f2,f3... для систем уравнений), а в программе это такой же идентификатор, что и остальные имена. Значение возвращается в вызывающий модуль (верхнего иерархического уровня).
В случае (если), модуль main объявлен функцией, то значение возвращается не в консольный поток вывода (stdout), как вы почему-то подумали. Значение возвращается командному процессору и его можно отследить командой if %errorlevel%.
В общем случае, возвращаемое значение - обычный объект, который может иметь свои особенности : тип, длину, структуру, размерность. И естественно, команда может встретиться неоднократно в теле функции, в тех местах, где необходим выход из функции (эдакий аналог goto end или exit)
WinRARМыслитель (5877) 7 лет назад
То есть как я понимаю, retern это результат работы функции?
но почему в main пишут return ( 0 ), когда например функция main отработала с ненулевым результатом?
Алекс Куха Высший разум (446924) Это значит, что автору код неинтересен. Т. е. он видит результат до окончания программы. Возвращение > 0 работает, когда надо определить разную реакцию после окончания работы кода. Нпрм, есть bat файл - последовательность модулей. Если в модуле ошибка, то смысла выполнять нижние (оставшиеся) модули (строки, команды) пропадает (или наоборот) prog1 if %errorlevel% exit prog2
Остальные ответы
Иван Сигаев Искусственный Интеллект (150316) 7 лет назад
return возвращает значение из функции
не нужно путать возвращаемое значение и вывод текста на консоль
int main()
{
return 100;
}
ничего на экран не напишет, а значение будет доступно программе, которая вызывала данную функцию/программу
WinRARМыслитель (5877) 7 лет назад
что значит возвращает? куда возвращает? Почему ноль? Для чего это нужно?
Иван Сигаев Искусственный Интеллект (150316) int func() {return 1;} // возвращает значение 1 int main() {printf("%d",func()); // печатает на консоль значение, которое вернула функция }
Высший разум (1270989) 7 лет назад
Не совсем верно. return это по сути возврат в вызывающую функцию. В случае плюсов также выполняется возврат значения с последующим возвратом в вызывающую функцию. Хотя как это объяснить нубу - я хз xD
Demon On Wheels Просветленный (30580) 7 лет назад
На место вызова функции вставляется значение.

int d( void ){
return 5 + 5;
}

cout << d();

// всё равно что написать cout << 10;
WinRARМыслитель (5877) 7 лет назад
А если в функции несколько разных операций и получившихся значений должно быть больше 1, то есть например нам нужно вернуть результат 5+5 и 5*5, то есть на выходе должно получиться 10 и 25.
Нужно писать два ретерна?
Или 2 ретерна не бывает и нужно писать две функции?
Высший разум (1270989) Это только в питоне вроде можно вернуть несколько значений. В обычных прогах можно вернуть либо подобие структуры, либо вернуть значения в переданные по адресам переменные.
inga zajonc Искусственный Интеллект (185880) 7 лет назад
Востанавливаем из стека адрес последней команды (точка возврата), подолжаем выполнение с этой точки.
Максим Искусственный Интеллект (198603) 7 лет назад
Простой пример функции:
double n = sqrt(5); вот sqrt это функция корня, и она вернула значение в точку вызова функции через return.
Другой пример: sin(a) + cos(a)
Mr. Perfectly Fine Оракул (62993) 7 лет назад
Строго говоря запись return x состоит из двух элементов:
return = закончить подпрограмму (так называемую функцию – обособленный участок кода)
x = результат работы подпрограммы, который записывается в память компьютера в то место, которое указывается "вызывающим" участком программы (тем участком, откуда "передаётся управление" в подпрограмму).

P. S. Результатов работы подпрограммы может быть несколько, но вот так специально указывается только один, таковы правила большинства языков программирования. Часто этот результат просто контрольный или, иначе говоря, сигнальный (код завершения).

P.P.S. В некоторых языках программирования указывать хоть какой-то код завершения обязательно, хотя он может при этом не нести никакого практического смысла.
Похожие вопросы