Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
jaketaylor
1 / 1 / 1
Регистрация: 22.05.2011
Сообщений: 67
#1

Значение оператора return - C++

04.05.2013, 20:13. Просмотров 964. Ответов 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();
  }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2013, 20:13     Значение оператора return
Посмотрите здесь:

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

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

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

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

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

подскажите значение оператора -> - C++
Всем привет. Через час бегу на экзамен. Вот сижу все повторяю. Один раз за весь семестр где-то всплыл оператор -&gt; кажется со struct ...

Значение указателей в условии оператора - C++
Добрый вечер, наткнулся на вроде бы донельзя тривиальную вещь, но все же непонятную: int ival = 1024; int *pi = 0; // pi допустим,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
04.05.2013, 20:19     Значение оператора return #2
Цитата Сообщение от jaketaylor Посмотреть сообщение
if (a > b) {Max = a; return b;}
если а больше б, то функция возвращяет б, и управление передаёт дальше.
jaketaylor
1 / 1 / 1
Регистрация: 22.05.2011
Сообщений: 67
04.05.2013, 20:20  [ТС]     Значение оператора return #3
Цитата Сообщение от SeregaC++ Посмотреть сообщение
Ретурн завершает функцию
Я про это прочитал.
return возвращает значение b или a (в зависимости от условия: a > b), но КУДА и в какую переменную оно возвращает?
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
04.05.2013, 20:22     Значение оператора return #4
Цитата Сообщение от jaketaylor Посмотреть сообщение
но КУДА и в какую переменную оно возвращает?
в то место где была вызвана эта функция

Добавлено через 1 минуту
Цитата Сообщение от jaketaylor Посмотреть сообщение
min = MinMax (N, M, max);
в этом случае результат сохраняется в переменной мин.
jaketaylor
1 / 1 / 1
Регистрация: 22.05.2011
Сообщений: 67
04.05.2013, 20:26  [ТС]     Значение оператора return #5
Цитата Сообщение от 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. Я правильно понял?
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.05.2013, 20:30     Значение оператора return #6
Цитата Сообщение от SeregaC++ Посмотреть сообщение
в этом случае результат сохраняется в переменной мин.
не совсем так. return возвращает значение функции в правый операнд оператора присваивания, а уже он присваивает значение правого операнда левому, то есть переменной min.

Добавлено через 1 минуту
Цитата Сообщение от jaketaylor Посмотреть сообщение
Допустим a=5, b=7.
Т.к. 5<7, то переменной Max присваивается значение 7 ({Max = b; return a;}), а return a возвращается значение переменной а (а = 5) в min? Почему в min?
Нет. Переменной max ничего не присваивается, так как она передана по значению.
jaketaylor
1 / 1 / 1
Регистрация: 22.05.2011
Сообщений: 67
04.05.2013, 20:34  [ТС]     Значение оператора return #7
Добавлено через 2 минуты
Цитата Сообщение от taras atavin Посмотреть сообщение
Нет. Переменной max ничего не присваивается,
А как же Max = b?
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.05.2013, 20:37     Значение оператора return #8
Цитата Сообщение от jaketaylor Посмотреть сообщение
А как же Max = b?
Ни как. Параметр-значение не изменен.
jaketaylor
1 / 1 / 1
Регистрация: 22.05.2011
Сообщений: 67
04.05.2013, 20:40  [ТС]     Значение оператора return #9
Цитата Сообщение от taras atavin Посмотреть сообщение
Ни как. Параметр-значение не изменен.
Тогда зачем это писать, можно было бы записать так?
C++
1
2
  if (a > b) {return b;}
  else       {return a;}
У меня ошибка в коде. Надо так:
C++
1
int MinMax (int a, int b, int &Max)
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
04.05.2013, 20:46     Значение оператора return #10
Цитата Сообщение от 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)
jaketaylor
1 / 1 / 1
Регистрация: 22.05.2011
Сообщений: 67
04.05.2013, 21:01  [ТС]     Значение оператора return #11
Цитата Сообщение от 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.

Блин, не понятно.
Разъясните кто-нибудь
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
04.05.2013, 22:48     Значение оператора return #12
Господитыбожемой. <цитата Дейкстры Джоеля про рекурсию и указатели>

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.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
04.05.2013, 22:54     Значение оператора return #13
jaketaylor, http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspx а вообще с программированием знакомы? На чем писали до плюсов? Паскаль, Асм, Сшарп или еще что-нибудь??
jaketaylor
1 / 1 / 1
Регистрация: 22.05.2011
Сообщений: 67
09.05.2013, 22:26  [ТС]     Значение оператора return #14
Цитата Сообщение от go Посмотреть сообщение
jaketaylor, http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspx а вообще с программированием знакомы? На чем писали до плюсов? Паскаль, Асм, Сшарп или еще что-нибудь??
asm
ValeryS
Модератор
6542 / 5008 / 461
Регистрация: 14.02.2011
Сообщений: 16,655
09.05.2013, 22:37     Значение оператора return #15
Цитата Сообщение от jaketaylor Посмотреть сообщение
asm
забудь все
другой подход другая парадигма
особенно меня мучало отсутствие условных переходов
пока не научился мыслить по другому

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

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

Не по теме:

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

ValeryS
Модератор
6542 / 5008 / 461
Регистрация: 14.02.2011
Сообщений: 16,655
09.05.2013, 23:06     Значение оператора return #17
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Надо человеку предложить писать сначало на C++, скомпилировать, деассемблировать, а потом смотреть что в итоге вышло =)
и что это изменит?
для платформы х86 возвращаемое значение лежит в EAX ( или во флаге переноса если возвращается bool)
jaketaylor
1 / 1 / 1
Регистрация: 22.05.2011
Сообщений: 67
10.05.2013, 03:07  [ТС]     Значение оператора return #18
Как я понял, то return просто "приравнивает" значение b переменной MinMax. Аналогично b == MinMax.
Код
int MinMax (int a, int b, int Max)  //a, b, c - это формальные параметры.
  {
  if (a > b) {Max = a; return b;}
  else       {Max = b; return a;}
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
10.05.2013, 11:42     Значение оператора return #19
Цитата Сообщение от 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. Вот почитайте например у мелкомягких.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.05.2013, 12:13     Значение оператора return
Еще ссылки по теме:

Вывести "return 0" если введенное значение равно -1 - C++
Вывести return 0 если в вводе есть -1 ,но есть одно но. я ввожу 3 элемента так while(cin&gt;&gt;time&gt;mission&gt;&gt;status) и вот такой тест 3 E...

Вычислить значение выражения с использованием оператора switch - C++
Вычислить значение выражения с использованием оператора switch. Не знаю, что делать дальше. #include &lt;stdio.h&gt; #include &lt;conio.h&gt;...

Почему при перегрузке оператора присваивания, возвращаемое значение не константно? - C++
Почему при перегрузке оператора присваивания, возвращаемое значение - someClass &amp; operator=(const someClass&amp; rhl), а не const someClass &amp;...

Найти значение заданного выражения без использования условного оператора - C++
Скоро экзамен , кто чем может ) Помоги ближнему , ибо смех продлевает жизнь...) 12. Дано целое число N (&gt; 0). Найти значение...

Вызов прегруженного оператора вывода в поток из аналогичного оператора - C++
Программирую в c9.io с g++ получается тоже самое. Элементами стека(pointList) являются стеки(list) для которых уже определен оператор...


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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6542 / 5008 / 461
Регистрация: 14.02.2011
Сообщений: 16,655
10.05.2013, 12:13     Значение оператора return #20
Цитата Сообщение от Tulosba Посмотреть сообщение
Объяснять новичку плюсовый код через ассемблерные команды - это вообще лютый трэш. Знай ТС асм в нужном объеме, вопросов про return не возникло бы вовсе.
я исходил из того что раньше он писал на ассемблере

Цитата Сообщение от go Посмотреть сообщение
На чем писали до плюсов?
Цитата Сообщение от jaketaylor Посмотреть сообщение
asm
Yandex
Объявления
10.05.2013, 12:13     Значение оператора return
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru