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

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

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

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

Добавлено через 2 минуты
А вообще это влияние ассемблера, где вызов метода сопряжён с запоминанием адреса, откуда он был вызван в стеке. В том же Ассемблере есть инструкция ret, которая извлекает из стека адрес и переходит по нему, возвращая управление туда, откуда метод был вызван. При компиляции return, как правило, заменяются инструкциями ret плюс небольшие навороты связанные с убиранием мусора за программистом.
aLarman
636 / 557 / 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
Сообщений: 339
Записей в блоге: 2
29.01.2014, 15:26     Куда отправляет return ,если при команде ничего прописано? #4
Цитата Сообщение от aLarman Посмотреть сообщение
return-а нет
В таком случае компилятор всё равно допиливает его в самом конце метода.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
29.01.2014, 15:27     Куда отправляет return ,если при команде ничего прописано? #5
блин а я думал сломается, return не является аналогом ret из ассемблера
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 339
Записей в блоге: 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
Сообщений: 339
Записей в блоге: 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
5282 / 4801 / 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 ,если при команде ничего прописано?
Еще ссылки по теме:

Значение якобы возвращённое функцией при опущенном return C++
Если пользователь ничего не предпринимает в течении нескольких секунд, тогда выполняется какое-либо действие C++
С аргументами программа вылетает на последней команде "return 0;". Без аргументов - нет C++

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

Или воспользуйтесь поиском по форуму:
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 339
Записей в блоге: 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 ,если при команде ничего прописано?
Ответ Создать тему
Опции темы

Текущее время: 03:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru