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

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

Войти
Регистрация
Восстановить пароль
 
X_Starter_X
11 / 11 / 1
Регистрация: 01.12.2011
Сообщений: 130
Записей в блоге: 2
#1

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

04.08.2014, 21:04. Просмотров 504. Ответов 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'ы дойдут до конца?
Заранее спасибо!
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DeadHipo
85 / 85 / 26
Регистрация: 21.09.2013
Сообщений: 339
04.08.2014, 21:12     Вернуть из функции значение; при этом прервать саму функцию #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Сначала будет
i = 0, j = 0, k = 0, после он проверит 0+0+0 == var
далее
i = 0, j = 0, k = 1 итд.
И из функции (и из цикла соответственно) он выйдет как только k будет равно 7.

Добавлено через 37 секунд
собственно j++ произойдёт только когда k>100
BRcr
4006 / 2295 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
04.08.2014, 21:16     Вернуть из функции значение; при этом прервать саму функцию #3
Как только по логике кода дойдет до оператора return, все циклы, все try - catch, switch и прочее - все прерывается и функция возвращает то, что под ретерном.
SatanaXIII
Супер-модератор
Эксперт С++
5594 / 2628 / 240
Регистрация: 01.11.2011
Сообщений: 6,469
Завершенные тесты: 1
05.08.2014, 08:54     Вернуть из функции значение; при этом прервать саму функцию #4
Цитата Сообщение от 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; // Если все же до сюда дойдет, то мы это узнаем по возвращенному результату
}
krv
72 / 52 / 11
Регистрация: 10.07.2014
Сообщений: 328
05.08.2014, 11:07     Вернуть из функции значение; при этом прервать саму функцию #5
Есть еще один нюанс.
если взять код
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
//что бывает удобно если точек выходе несколько
}
}
SatanaXIII
Супер-модератор
Эксперт С++
5594 / 2628 / 240
Регистрация: 01.11.2011
Сообщений: 6,469
Завершенные тесты: 1
05.08.2014, 11:18     Вернуть из функции значение; при этом прервать саму функцию #6
Цитата Сообщение от krv Посмотреть сообщение
еще один нюанс
Особенно если учесть, что __finally не стандартизирован и внутри него может располагаться что угодно, то нюанс еще тот. И вообще стоит два раза подумать, прежде чем пихать что-либо, начинающееся с двух нижних подчеркиваний, туда, где оно впринципе необязательно.
Но вцелом да, вцелом хорошо.
DeadHipo
85 / 85 / 26
Регистрация: 21.09.2013
Сообщений: 339
05.08.2014, 12:29     Вернуть из функции значение; при этом прервать саму функцию #7
Цитата Сообщение от krv Посмотреть сообщение
Есть еще один нюанс.
Вроде, стоит помнить о том, что если внутри try возникнет ошибка __finally выполниться тоже. Ведь верно?
SatanaXIII
Супер-модератор
Эксперт С++
5594 / 2628 / 240
Регистрация: 01.11.2011
Сообщений: 6,469
Завершенные тесты: 1
05.08.2014, 12:38     Вернуть из функции значение; при этом прервать саму функцию #8
DeadHipo, __finally вообще разрабатывался как защита от exception-ов.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2014, 12:49     Вернуть из функции значение; при этом прервать саму функцию
Еще ссылки по теме:
C++ Как вернуть значение результат работы функции в переменную?
.Написать функцию, которая будет возвращать значение y=ln(x)+x при входящем параметре x. Построить таблицу значений этой функции C++
Необходимо вернуть значение функции из Булевского значения и посчитать факториал C++
Как вернуть значение нескольких переменных в точку вызова функции C++
Вернуть из функции среднее значение из максимальных значений строк матрицы C++

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

Или воспользуйтесь поиском по форуму:
krv
72 / 52 / 11
Регистрация: 10.07.2014
Сообщений: 328
05.08.2014, 12:49     Вернуть из функции значение; при этом прервать саму функцию #9
Цитата Сообщение от DeadHipo Посмотреть сообщение
Вроде, стоит помнить о том, что если внутри try возникнет ошибка __finally выполниться тоже. Ведь верно?
Да, конечно.
Yandex
Объявления
05.08.2014, 12:49     Вернуть из функции значение; при этом прервать саму функцию
Ответ Создать тему
Опции темы

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