Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
1 / 1 / 1
Регистрация: 22.05.2011
Сообщений: 72

Значение оператора return

04.05.2013, 20:13. Показов 2326. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прочитал про оператор return, но не очень понятно про его.
Как он используется ниже (объясните), может после этого примера что-либо прояснится относительно return.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <conio.h>
int MinMax (int a, int b, int Max)  //a, b, c - это формальные параметры.
  {
  if (a > b) {Max = a; return b;}
  else       {Max = b; return a;}
  }
 
main()
  {
  int N, M, min, max;
  printf("Введите два целых числа:\n");
  scanf("%d%d", &N, &M);
  min = MinMax (N, M, max);  //вызов функции  //N, M, max - это фактические параметры и Первый фактический параметр используется внутри функции вместо первого формального (см. выше) параметра, и т.д.
  printf("Наименьшее - %d, наибольшее - %d\n", min, max);
  getch();
  }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.05.2013, 20:13
Ответы с готовыми решениями:

Значение пустого оператора return
Скажите для чего он нужен вообще? допустим: void Func(){ if(){ //что-то делаем return; } }

Назначение оператора return
Клянусь вам что прочёс огромное кол-во статей, форумов и т.д. про функцию return, но так и не понял что она делает. Все пишут что...

Перегрузка оператора return
Можно ли перегрузить оператор return? Что по умолчанию в его теле? Тот же вопрос и с goto.

21
433 / 368 / 149
Регистрация: 06.08.2012
Сообщений: 961
04.05.2013, 20:19
Цитата Сообщение от jaketaylor Посмотреть сообщение
if (a > b) {Max = a; return b;}
если а больше б, то функция возвращяет б, и управление передаёт дальше.
0
1 / 1 / 1
Регистрация: 22.05.2011
Сообщений: 72
04.05.2013, 20:20  [ТС]
Цитата Сообщение от SeregaC++ Посмотреть сообщение
Ретурн завершает функцию
Я про это прочитал.
return возвращает значение b или a (в зависимости от условия: a > b), но КУДА и в какую переменную оно возвращает?
0
433 / 368 / 149
Регистрация: 06.08.2012
Сообщений: 961
04.05.2013, 20:22
Цитата Сообщение от jaketaylor Посмотреть сообщение
но КУДА и в какую переменную оно возвращает?
в то место где была вызвана эта функция

Добавлено через 1 минуту
Цитата Сообщение от jaketaylor Посмотреть сообщение
min = MinMax (N, M, max);
в этом случае результат сохраняется в переменной мин.
0
1 / 1 / 1
Регистрация: 22.05.2011
Сообщений: 72
04.05.2013, 20:26  [ТС]
Цитата Сообщение от SeregaC++ Посмотреть сообщение
в этом случае результат сохраняется в переменной мин.
Что-то я запутался.
C++
1
2
3
  
if (a > b) {Max = a; return b;}
  else       {Max = b; return a;}
Допустим a=5, b=7.
Т.к. 5<7, то переменной Max присваивается значение 7 ({Max = b; return a;}), а return a возвращается значение переменной а (а = 5) в min.
В min, т.к. в начале в MinMax, а этот код min = MinMax (N, M, max); ниже присваивает переменной min значение MinMax. Я правильно понял?
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
04.05.2013, 20:30
Цитата Сообщение от SeregaC++ Посмотреть сообщение
в этом случае результат сохраняется в переменной мин.
не совсем так. return возвращает значение функции в правый операнд оператора присваивания, а уже он присваивает значение правого операнда левому, то есть переменной min.

Добавлено через 1 минуту
Цитата Сообщение от jaketaylor Посмотреть сообщение
Допустим a=5, b=7.
Т.к. 5<7, то переменной Max присваивается значение 7 ({Max = b; return a;}), а return a возвращается значение переменной а (а = 5) в min? Почему в min?
Нет. Переменной max ничего не присваивается, так как она передана по значению.
0
1 / 1 / 1
Регистрация: 22.05.2011
Сообщений: 72
04.05.2013, 20:34  [ТС]
Добавлено через 2 минуты
Цитата Сообщение от taras atavin Посмотреть сообщение
Нет. Переменной max ничего не присваивается,
А как же Max = b?
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
04.05.2013, 20:37
Цитата Сообщение от jaketaylor Посмотреть сообщение
А как же Max = b?
Ни как. Параметр-значение не изменен.
0
1 / 1 / 1
Регистрация: 22.05.2011
Сообщений: 72
04.05.2013, 20:40  [ТС]
Цитата Сообщение от taras atavin Посмотреть сообщение
Ни как. Параметр-значение не изменен.
Тогда зачем это писать, можно было бы записать так?
C++
1
2
  if (a > b) {return b;}
  else       {return a;}
У меня ошибка в коде. Надо так:
C++
1
int MinMax (int a, int b, int &Max)
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
04.05.2013, 20:46
Цитата Сообщение от jaketaylor Посмотреть сообщение
Тогда зачем это писать,
А чёрт его знает.
Цитата Сообщение от jaketaylor Посмотреть сообщение
можно было бы записать так?
C++
1
2
* if (a > b) {return b;}
* else * * * {return a;}
C++
1
 
нет, надо было написать
Цитата Сообщение от jaketaylor Посмотреть сообщение
C++
1
int MinMax (int a, int b, int &Max)
0
1 / 1 / 1
Регистрация: 22.05.2011
Сообщений: 72
04.05.2013, 21:01  [ТС]
Цитата Сообщение от taras atavin Посмотреть сообщение
Сообщение от jaketaylor
можно было бы записать так?
Код C++
1
2
* if (a > b) {return b;}
* else * * * {return a;}
Код C++
1
2
нет, надо было написать
Сообщение от jaketaylor
Код C++
1
int MinMax (int a, int b, int &Max)
Не уловил логики

Добавлено через 7 минут
Я вроде разобрался.
Запускаем программу.
1) Ввожу числа по очереди (например ввожу):
25 (Enter)
3 (Enter)
2) Получается так (исходя из кода):
a = 25;
b = 3;
3) Т.к. 25 > 3 (a > b), то в параметр Max заносится число 25, а return b возвращает в функцию MinMax значение b, которое равно 3.
4)
C++
1
min = MinMax (N, M, max);
min присваивается число 3.

Блин, не понятно.
Разъясните кто-нибудь
0
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
04.05.2013, 22:48
Господитыбожемой. <цитата Дейкстры Джоеля про рекурсию и указатели>

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int MinMax(int a, int b, int &max)
{
    if (a > b)
    {
        max = a;
        return b;
    }
    else
    {
        max = b;
        return a;
    }
}
 
int main()
{
    int x = 3;
    int y = 4;
    int w, z;
 
    w = MinMax(x, y, z);
}
Переменные x и y из main() остаются теми же. Переменная w получает возвращаемое значение этого вызова функции MinMax() — минимум тех двух чисел, то есть 3. Переменная z получает то значение, которое ей присвоили внутри MinMax() — максимум, то есть 4.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
04.05.2013, 22:54
jaketaylor, http://msdn.microsoft.com/en-u... s.80).aspx а вообще с программированием знакомы? На чем писали до плюсов? Паскаль, Асм, Сшарп или еще что-нибудь??
0
1 / 1 / 1
Регистрация: 22.05.2011
Сообщений: 72
09.05.2013, 22:26  [ТС]
Цитата Сообщение от go Посмотреть сообщение
jaketaylor, http://msdn.microsoft.com/en-u... s.80).aspx а вообще с программированием знакомы? На чем писали до плюсов? Паскаль, Асм, Сшарп или еще что-нибудь??
asm
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
09.05.2013, 22:37
Цитата Сообщение от jaketaylor Посмотреть сообщение
asm
забудь все
другой подход другая парадигма
особенно меня мучало отсутствие условных переходов
пока не научился мыслить по другому

если тебе это поможет то вот это
C++
1
return  23;
превратится на ассемблере вот в такой код

Assembler
1
2
mov eax,23;
ret;
возвращаемое значение в регистре eax если не влазит то в паре eax edx
0
09.05.2013, 22:54

Не по теме:

Цитата Сообщение от ValeryS Посмотреть сообщение
если тебе это поможет то вот это
Надо человеку предложить писать сначало на C++, скомпилировать, деассемблировать, а потом смотреть что в итоге вышло =)

0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
09.05.2013, 23:06
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Надо человеку предложить писать сначало на C++, скомпилировать, деассемблировать, а потом смотреть что в итоге вышло =)
и что это изменит?
для платформы х86 возвращаемое значение лежит в EAX ( или во флаге переноса если возвращается bool)
0
1 / 1 / 1
Регистрация: 22.05.2011
Сообщений: 72
10.05.2013, 03:07  [ТС]
Как я понял, то return просто "приравнивает" значение b переменной MinMax. Аналогично b == MinMax.
Code
1
2
3
4
int MinMax (int a, int b, int Max)  //a, b, c - это формальные параметры.
  {
  if (a > b) {Max = a; return b;}
  else       {Max = b; return a;}
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
10.05.2013, 11:42
Цитата Сообщение от taras atavin Посмотреть сообщение
return возвращает значение функции в правый операнд оператора присваивания
В общем случае никаких операторов присваивания может и не быть. Например при передаче результата функции как аргумента другой функции.

В коде ТС:
C++
1
2
3
4
5
int MinMax (int a, int b, int Max)  //a, b, c - это формальные параметры.
  {
  if (a > b) {Max = a; return b;}
  else       {Max = b; return a;}
  }
функция вернет минимум, но вот максимум не вернет никак. Так как Max локальна в пределах функции. Нужно использовать например передачу по ссылке. Собственно об этом уже говорили в теме.

Объяснять новичку плюсовый код через ассемблерные команды - это вообще лютый трэш. Знай ТС асм в нужном объеме, вопросов про return не возникло бы вовсе.

Цитата Сообщение от jaketaylor Посмотреть сообщение
Как я понял, то return просто "приравнивает" значение b переменной MinMax. Аналогично b == MinMax.
MinMax - это функция, а не переменная. У функции есть аргументы, а есть возвращаемое значение. Оно и задается оператором return. Вот почитайте например у мелкомягких.
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,854
10.05.2013, 12:13
Цитата Сообщение от Tulosba Посмотреть сообщение
Объяснять новичку плюсовый код через ассемблерные команды - это вообще лютый трэш. Знай ТС асм в нужном объеме, вопросов про return не возникло бы вовсе.
я исходил из того что раньше он писал на ассемблере

Цитата Сообщение от go Посмотреть сообщение
На чем писали до плюсов?
Цитата Сообщение от jaketaylor Посмотреть сообщение
asm
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.05.2013, 12:13
Помогаю со студенческими работами здесь

Значение, возвращаемое return, не соответствует ожиданиям
Добрый вечер! Подскажите, пожалуйста, что я делаю не так? Почему return возвращает 2, а не c? AleksandraM, код перепечатываем в...

В чем разница между return и return false/true
Привет всем. Вот подскажите плиз) return; return false; return true; расскажите пожалуйста об етих операторах.. чем они...

Значение якобы возвращённое функцией при опущенном return
Что считается значением, возвращённым функцией, в которой опущен оператор `return`? Зачем компилятор позволяет не указывать `return` в...

Как вернуть только верхнее значение стека через return
Есть рекурсивная функция, которая возвращает определенное значение. Вопрос - как вернуть только верхнее значение стека через return, а не...

Как сделать так, что если файл существует return true, если нет - return false
Здравствуйте, я новичок в программировании. Мой вопрос очень прост: как сделать так, что если файл существует return true если нет return...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru