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

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

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

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

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

куда отправляет return ,если при команде ничего прописано?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2014, 00:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Куда отправляет return ,если при команде ничего прописано? (C++):

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

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

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

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

Куда идёт return? - JavaScript
В общем, написал простую программку - Камень-Ножницы-Бумагу: var userChoice = prompt("Do you choose rock, paper or scissors?"); var...

MySQL Сделать ссылку которая открывает файл , если название файла прописано в таблице БД - PHP БД
Добрый день, уже мучаюсь пол дня, так как только начинаю познавать азы php) есть вывод названия файла из таблицы БД, надо сделать так...

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

Добавлено через 2 минуты
А вообще это влияние ассемблера, где вызов метода сопряжён с запоминанием адреса, откуда он был вызван в стеке. В том же Ассемблере есть инструкция ret, которая извлекает из стека адрес и переходит по нему, возвращая управление туда, откуда метод был вызван. При компиляции return, как правило, заменяются инструкциями ret плюс небольшие навороты связанные с убиранием мусора за программистом.
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
29.01.2014, 15:24 #3
Цитата Сообщение от НеСказочник Посмотреть сообщение
При компиляции return, как правило, заменяются инструкциями ret плюс небольшие навороты
а если
C++
1
2
3
4
5
void f()
{
int a=0;
a++;
}
return-а нет
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 344
Записей в блоге: 2
29.01.2014, 15:26 #4
Цитата Сообщение от aLarman Посмотреть сообщение
return-а нет
В таком случае компилятор всё равно допиливает его в самом конце метода.
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
29.01.2014, 15:27 #5
блин а я думал сломается, return не является аналогом ret из ассемблера
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 344
Записей в блоге: 2
29.01.2014, 15:31 #6
Цитата Сообщение от aLarman Посмотреть сообщение
return не является аналогом ret
я не говорил про аналог. Но при компиляции кода в ассемблер все выходы из метода допиливаются небольшими кусками кода, подчищающими в стеке за программистом. И эти куски всегда заканчиваются инструкцией ret. За исключением, разве что inline методов. Если язык высокого уровня компилируется то обязательно либо в ассемблер, либо в байткод. Но байткод, при выполнении, всё равно превращается в ассемблер.
Владимир2000
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 8
30.01.2014, 00:32  [ТС] #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
Сообщений: 344
Записей в блоге: 2
30.01.2014, 00:41 #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  [ТС] #9
это полный текст задания в контрольной. Я не могу понять как поступает здесь return. Или внутри цикла, где он и расположен, или в цикле while? или вообще в начало фрагмента?
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.01.2014, 00:57 #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.
НеСказочник
58 / 46 / 7
Регистрация: 12.11.2012
Сообщений: 344
Записей в блоге: 2
30.01.2014, 00:57 #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 всегда вызывает система в момент запуска программы, то управление будет передано системе и, соответственно, программа завершится.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2014, 00:57
Привет! Вот еще темы с ответами:

Куда отправляет данные форма через AJAX - JavaScript
Здравствуйте, уважаемые форумчане! Такой весьма необычный вопрос: есть сайт smmplanner.com там в личном кабинете есть кнопка...

php mail отправляет только на gmail, на остальные не приходит ничего, даже спам пустой - PHP
ini_set(&quot;SMTP&quot;, &quot;*****.l.google.com&quot;); ini_set(&quot;smtp_port&quot;, &quot;25&quot;); if (mail(&quot;cypher****@mail.ru&quot;,...

Для чего нужен return, что и куда он возвращает? - C#
Добрый день хацкеры. Как понять такую запись На примере string s = &quot;My Name&quot;;//переменная для сравнения. //список _Links...

При закрытии книга предлагает сохранить изменения, даже если ничего не изменилось - MS Excel
После ввода формулы =ДВССЫЛ(АДРЕС(7;2;;;Сведения!$H$1)) при закрытии рабочая книга требует сохранений, даже если ничего не изменилось....


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.01.2014, 00:57
Ответ Создать тему
Опции темы

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