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

Вернуть из функции значение; при этом прервать саму функцию

04.08.2014, 21:04. Показов 1817. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всех приветствую! Прощу прощения за глупый вопрос, но не знаю на него ответа. Требуется вернуть из функции значение при этом прервать саму функцию. Есть к примеру код (нигде не используется в проектах, написал для понимания вопроса):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bool VarProb=Proba(7);
 
bool Proba(int var)
{
    for (int i=0; i<100; i++)
    {
        for (int j=0; j<100; j++)
        {
            for (int k=0; k<100; k++)
            {
                if ((i+j+k)==var) return true;
            }
        }
    }
}
Так вот вопрос: из функции true вернётся сразу же когда условие (i+j+k)==var (т.е. фактический должно получится 0+0+7 и больше никаких других случаев) станет истинным, или же сначала все for'ы дойдут до конца?
Заранее спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.08.2014, 21:04
Ответы с готовыми решениями:

Сравнить два массива на идентичность и при этом вернуть значение, которое не идентично
Всем доброго время суток! У меня задача сравнить два массива на идентичность и при этом вернуть значение, которое не идентично т.е....

Передать значение из функции в нее же саму при следующем вызове
нужно передать значение pustie в функцию и из нее при каждом взятии этой функции вот заголовки: LRESULT CALLBACK WndProc(HWND, UINT,...

Вернуть значение из функции summa в функцию main
//Я только начал учить функции, и столкнулся с такой проблемой - //пример из учебника не работает, это оч. печально! //Прошу вас,...

8
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
04.08.2014, 21:12
Лучший ответ Сообщение было отмечено X_Starter_X как решение

Решение

Сначала будет
i = 0, j = 0, k = 0, после он проверит 0+0+0 == var
далее
i = 0, j = 0, k = 1 итд.
И из функции (и из цикла соответственно) он выйдет как только k будет равно 7.

Добавлено через 37 секунд
собственно j++ произойдёт только когда k>100
1
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
04.08.2014, 21:16
Как только по логике кода дойдет до оператора return, все циклы, все try - catch, switch и прочее - все прерывается и функция возвращает то, что под ретерном.
1
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
05.08.2014, 08:54
Цитата Сообщение от X_Starter_X Посмотреть сообщение
или же сначала все for'ы дойдут до конца?
return это точка выхода из функции. Как только она попадается, все, что следует за ней далее в этой же функции, мгновенно отбрасывается.

Но всегда необходимо предусматривать и вариант, когда все ваши условия (вдруг) не выполнятся, то есть что возвращать по умолчанию:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
bool Proba(int var)
{
    for (int i=0; i<100; i++)
    {
        for (int j=0; j<100; j++)
        {
            for (int k=0; k<100; k++)
            {
                if ((i+j+k)==var) return true;
            }
        }
    }
    return false; // Если все же до сюда дойдет, то мы это узнаем по возвращенному результату
}
1
74 / 54 / 17
Регистрация: 10.07.2014
Сообщений: 329
05.08.2014, 11:07
Есть еще один нюанс.
если взять код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bool Proba(int var)
{
try {
    for (int i=0; i<100; i++)
    {
        for (int j=0; j<100; j++)
        {
            for (int k=0; k<100; k++)
            {
                if ((i+j+k)==var) return true;
            }
        }
    }
} __finally {
//этот код выполняется при return
//что бывает удобно если точек выходе несколько
}
}
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
05.08.2014, 11:18
Цитата Сообщение от krv Посмотреть сообщение
еще один нюанс
Особенно если учесть, что __finally не стандартизирован и внутри него может располагаться что угодно, то нюанс еще тот. И вообще стоит два раза подумать, прежде чем пихать что-либо, начинающееся с двух нижних подчеркиваний, туда, где оно впринципе необязательно.
Но вцелом да, вцелом хорошо.
0
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
05.08.2014, 12:29
Цитата Сообщение от krv Посмотреть сообщение
Есть еще один нюанс.
Вроде, стоит помнить о том, что если внутри try возникнет ошибка __finally выполниться тоже. Ведь верно?
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
05.08.2014, 12:38
DeadHipo, __finally вообще разрабатывался как защита от exception-ов.
0
74 / 54 / 17
Регистрация: 10.07.2014
Сообщений: 329
05.08.2014, 12:49
Цитата Сообщение от DeadHipo Посмотреть сообщение
Вроде, стоит помнить о том, что если внутри try возникнет ошибка __finally выполниться тоже. Ведь верно?
Да, конечно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.08.2014, 12:49
Помогаю со студенческими работами здесь

Как из функции возвращающей табличное значение грамотно выдернуть значение и при этом сделать INSERT
В базе существует таблица с полями k0, k1, k2. Написана функция, возвращающая табличное значение типа k0, k1, k2, r0. Возвращает она всегда...

Как вернуть значение функции при нажатии кнопки?
Имеется функция в отдельном файле: import pickle as pk def load_file(): database = pk.load(open(p.way_to_base,...

Как при выходе из функции вернуть "старое" значение объекта
Byval работает только на простые типы - string?... У меня есть свой type или function. Мне необходимо при выходе из функции вернуть его...

Написать функцию, которая получает на вход имя другой функции и возвращает саму функцию, если она есть и null, если нет.
Написать функцию, которая получает на вход имя другой функции, а на выходе возвращает саму функцию, если она есть и null, если нет ...

Передать переменную из одной функции в другую, не вызывая саму функцию
И так есть 2 функции. В первую функцию func_1 передается перменная q она там как-то обрабатывается и теперь полученную переменную tmp надо...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru