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

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

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

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

04.08.2014, 21:04. Просмотров 522. Ответов 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)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2014, 21:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вернуть из функции значение; при этом прервать саму функцию (C++):

Передать массив в функцию и вернуть из функции - C++
Доброго времени суток. Пытаюсь считать из файлов числа и попарно их перемножить. Проблема в функциях void EnterMassive и void Multi. В...

Вернуть значение из функции - C++
Приветсвую программисты! Такая проблема, надо возвратить m из функции, а оно возвращает не то что надо вообще 2 ошибки: вот основной...

Как вернуть значение функции в С++ - C++
Помогите с задачей

Функции, как вернуть значение? - C++
Нужно вернуть значение sum и min и вывести их main.cpp Но компилятор пишет, что: &quot;Ошибка : использована неинициализированная локальная...

Как вернуть значение функции - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; struct list{ float data; list *next; }; void my(list *p) {

Вернуть значение функции, запущенной через CreateThread - C++
У меня есть некоторая функция, которая через CreateProcess() запускается, но мне нужно как-то получать значение, которая она вычисляет...

8
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
1
BRcr
4008 / 2297 / 155
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
04.08.2014, 21:16 #3
Как только по логике кода дойдет до оператора return, все циклы, все try - catch, switch и прочее - все прерывается и функция возвращает то, что под ретерном.
1
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,530
Завершенные тесты: 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; // Если все же до сюда дойдет, то мы это узнаем по возвращенному результату
}
1
krv
73 / 53 / 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
//что бывает удобно если точек выходе несколько
}
}
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,530
Завершенные тесты: 1
05.08.2014, 11:18 #6
Цитата Сообщение от krv Посмотреть сообщение
еще один нюанс
Особенно если учесть, что __finally не стандартизирован и внутри него может располагаться что угодно, то нюанс еще тот. И вообще стоит два раза подумать, прежде чем пихать что-либо, начинающееся с двух нижних подчеркиваний, туда, где оно впринципе необязательно.
Но вцелом да, вцелом хорошо.
0
DeadHipo
85 / 85 / 26
Регистрация: 21.09.2013
Сообщений: 339
05.08.2014, 12:29 #7
Цитата Сообщение от krv Посмотреть сообщение
Есть еще один нюанс.
Вроде, стоит помнить о том, что если внутри try возникнет ошибка __finally выполниться тоже. Ведь верно?
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,530
Завершенные тесты: 1
05.08.2014, 12:38 #8
DeadHipo, __finally вообще разрабатывался как защита от exception-ов.
0
krv
73 / 53 / 11
Регистрация: 10.07.2014
Сообщений: 328
05.08.2014, 12:49 #9
Цитата Сообщение от DeadHipo Посмотреть сообщение
Вроде, стоит помнить о том, что если внутри try возникнет ошибка __finally выполниться тоже. Ведь верно?
Да, конечно.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2014, 12:49
Привет! Вот еще темы с ответами:

Как вернуть из моей функции значение реестра? - C++
Здравствуйте.2й день стал изучать работу с реестром.Ничего с мсдн не понял.Случайно нашел рабочий код для получения версии Windows.Все...

Как вернуть значение результат работы функции в переменную? - C++
Как вернуть значение результат работы функции в переменную? К примеру { URLDownloadTofile(1,2,3,4) } Возвращенное значение вернуть...

.Написать функцию, которая будет возвращать значение y=ln(x)+x при входящем параметре x. Построить таблицу значений этой функции - C++
.Написать функцию, которая будет возвращать значение y=ln(x)+x при входящем параметре x. Построить таблицу значений этой функции. ...

Необходимо вернуть значение функции из Булевского значения и посчитать факториал - C++
Стоит задача- Написато программу которая спрашивает пользователя - Рост, вес, и возраст а затем выдаёт размер одежды по след. формулам: ...


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

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

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