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

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

Войти
Регистрация
Восстановить пароль
 
Владимир2000
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 8
#1

Куда отправляет return ,если при команде ничего прописано? - C++

29.01.2014, 00:04. Просмотров 378. Ответов 10
Метки нет (Все метки)

куда отправляет return ,если при команде ничего прописано?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2014, 00:04     Куда отправляет return ,если при команде ничего прописано?
Посмотрите здесь:

Куда return возвращает результат из функции? - C++
Добрый день . возник вопрос куда возвращает return из функции , то что он должен возвратить? Я думал он возвращает результат туда где он...

С аргументами программа вылетает на последней команде "return 0;". Без аргументов - нет - C++
С аргументами программа вылетает на последней команде "return 0;". Без аргументов - нет. При запуске её из командного файла прекращается...

Программа, которая включала бы другую программу при заданной команде - C++
Подскажите есть ли такая программа которая включала бы другую программу при заданной команде. Я хочу записать видео с экрана когда кто то...

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

Составить программу, подсчитывающую число удалений в каждой команде при игре в хоккей - C++
Составить программу, подсчитывающую число удалений в каждой команде при игре в хоккей. После каждого удаления выводить на экран фамилию...

Срабатывание деструктора при return класса - C++
Есть класс: class Test { public: char* Data; }; У этого класса есть деструктор который делает delete Data; Есть...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 340
Записей в блоге: 2
29.01.2014, 00:18     Куда отправляет return ,если при команде ничего прописано? #2
Отправляет вон из функции.

Добавлено через 2 минуты
А вообще это влияние ассемблера, где вызов метода сопряжён с запоминанием адреса, откуда он был вызван в стеке. В том же Ассемблере есть инструкция ret, которая извлекает из стека адрес и переходит по нему, возвращая управление туда, откуда метод был вызван. При компиляции return, как правило, заменяются инструкциями ret плюс небольшие навороты связанные с убиранием мусора за программистом.
aLarman
641 / 562 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
29.01.2014, 15:24     Куда отправляет return ,если при команде ничего прописано? #3
Цитата Сообщение от НеСказочник Посмотреть сообщение
При компиляции return, как правило, заменяются инструкциями ret плюс небольшие навороты
а если
C++
1
2
3
4
5
void f()
{
int a=0;
a++;
}
return-а нет
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 340
Записей в блоге: 2
29.01.2014, 15:26     Куда отправляет return ,если при команде ничего прописано? #4
Цитата Сообщение от aLarman Посмотреть сообщение
return-а нет
В таком случае компилятор всё равно допиливает его в самом конце метода.
aLarman
641 / 562 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
29.01.2014, 15:27     Куда отправляет return ,если при команде ничего прописано? #5
блин а я думал сломается, return не является аналогом ret из ассемблера
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 340
Записей в блоге: 2
29.01.2014, 15:31     Куда отправляет return ,если при команде ничего прописано? #6
Цитата Сообщение от aLarman Посмотреть сообщение
return не является аналогом ret
я не говорил про аналог. Но при компиляции кода в ассемблер все выходы из метода допиливаются небольшими кусками кода, подчищающими в стеке за программистом. И эти куски всегда заканчиваются инструкцией ret. За исключением, разве что inline методов. Если язык высокого уровня компилируется то обязательно либо в ассемблер, либо в байткод. Но байткод, при выполнении, всё равно превращается в ассемблер.
Владимир2000
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 8
30.01.2014, 00:32  [ТС]     Куда отправляет return ,если при команде ничего прописано? #7
Что будет выведено на экран в результате выполнения приведенного фрагмента кода?
C++
1
2
3
4
5
6
7
8
9
10
11
  int n = 1;
 
  while (n<=10)
  {
      if (n%2) 
          printf("%d\n", n);
          n++;
          return;
      printf("%d\n", n);
      n++;
  }
здесь и сидит return и куда он отправляет?
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 340
Записей в блоге: 2
30.01.2014, 00:41     Куда отправляет return ,если при команде ничего прописано? #8
Цитата Сообщение от Владимир2000 Посмотреть сообщение
здесь и сидит return и куда он отправляет?
А откуда я могу знать без контекста? Приведите код полностью.

Добавлено через 2 минуты

Не по теме:

Кстати, цикл совершенно неправильно построен. Безусловный return в теле цикла просто прервёт цикл на первой же итерации.



Добавлено через 41 секунду

Не по теме:

И код

C++
1
2
printf("%d\n", n);
n++;
Вряд-ли когда будет выполнен.

Владимир2000
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 8
30.01.2014, 00:47  [ТС]     Куда отправляет return ,если при команде ничего прописано? #9
это полный текст задания в контрольной. Я не могу понять как поступает здесь return. Или внутри цикла, где он и расположен, или в цикле while? или вообще в начало фрагмента?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.01.2014, 00:57     Куда отправляет return ,если при команде ничего прописано? #10
Цитата Сообщение от Владимир2000 Посмотреть сообщение
Что будет выведено на экран в результате выполнения приведенного фрагмента кода?
C++
1
2
3
4
5
6
7
8
9
10
int n = 1; 
 while (n<=10)
 {
 if (n%2) 
 printf("%d\n", n);
 n++;
 return;
 printf("%d\n", n);
 n++;
 }
Будет выведено на экран: 1.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2014, 00:57     Куда отправляет return ,если при команде ничего прописано?
Еще ссылки по теме:

Если пользователь ничего не предпринимает в течении нескольких секунд, тогда выполняется какое-либо действие - C++
Ребята, нужно написать программу. Если пользователь ничего не предпринимает в течении нескольких секунд, тогда выполняется какое-либо...

Переменные при использовании шаблонов. Оператор return - C++
Доброго времени суток. В домашнем задании на первом семестре обучения поставлена задача: написать перегруженные шаблоны функций для...

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

Использование массивов и текстовых файлов//это не для слабаков..и если толком ничего не знаете то даже не пытайтесь решить - C++
1. Сформировать массив из произведений положительных элементов каждой строки массива С; если их в строке нет, результат должен быть равен...


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

Или воспользуйтесь поиском по форуму:
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 340
Записей в блоге: 2
30.01.2014, 00:57     Куда отправляет return ,если при команде ничего прописано? #11
return всегда завершает выполнение текущего метода и передаёт управление в ту точку, откуда данный метод был вызван. Если это и весь текст программы (Хотя я сомневаюсь, что он вообще откомпилируется в С++ без функции main), то, скорее всего return завершит работу приложения. По крайней мере, если полный текст программы такой:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void main()
{
 int n = 1;
 
 while (n<=10)
 {
  if (n%2) 
  printf("%d\n", n);
  n++;
  return;
  printf("%d\n", n);
  n++;
 }
}
То return прервёт метод main и вернёт управление тому, кто его вызывал. А так как метод main всегда вызывает система в момент запуска программы, то управление будет передано системе и, соответственно, программа завершится.
Yandex
Объявления
30.01.2014, 00:57     Куда отправляет return ,если при команде ничего прописано?
Ответ Создать тему
Опции темы

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