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

В чем разница между return и return false/true - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 69, средняя оценка - 4.68
BondEros
0 / 0 / 0
Регистрация: 15.10.2009
Сообщений: 10
26.10.2009, 14:15     В чем разница между return и return false/true #1
Привет всем. Вот подскажите плиз)

C++
1
2
3
return;
return false;
return true;
расскажите пожалуйста об етих операторах.. чем они отличаются от друг друга
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ximerus
 Аватар для ximerus
6 / 6 / 2
Регистрация: 17.07.2009
Сообщений: 5
26.10.2009, 14:47     В чем разница между return и return false/true #2
Оператор return; это оператор возвращения из функции и то что стоит после него возвращается в функцию из которой он вызывался! return false; возвращает ложь то есть 0, а return true; возвращает истину то 1!
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
26.10.2009, 16:12     В чем разница между return и return false/true #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
return;
применяется для досрочного выхода из void функции
return false;
return true;
возращает значение из функции булевого типа.
ximerus
 Аватар для ximerus
6 / 6 / 2
Регистрация: 17.07.2009
Сообщений: 5
26.10.2009, 17:12     В чем разница между return и return false/true #4
ну вот более опытный товарищь, разьяснил все в деталяХ!
ruslan_net
4 / 4 / 1
Регистрация: 18.09.2012
Сообщений: 38
31.10.2012, 23:05     В чем разница между return и return false/true #5
Подскажите как тут вернуть из функции flag=false. Пробовал по разному не могу разобраться

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int func (int k, int i, int j, bool flag, int p, int a[12][12])
{
       if (k==0)
                    {
                            if (((a[i-1][j-1])==1) || ((a[i-1][j])==1) || ((a[i-1][j+1])==1))  flag=false;
                            for(int k=1;k<=p;k++)
                            {
                                    if (((a[i][j-1])==1) || ((a[i][j])==1) || ((a[i][j+1])==1)) flag=false;
                                    i++;
                            }
                            if (((a[i+1][j-1])==1) || ((a[i+1][j])==1) || ((a[i+1][j+1])==1))  flag=false;
                            }
        else
                    {
                             if (((a[i-1][j-1])==1) || ((a[i][j-1]==1)) || ((a[i+1][j-1])==1))  flag=false;
                            for(int k=1;k<=p;k++)
                            {
                                if (((a[i-1][j])==1) || ((a[i][j])==1) || ((a[i+1][j])==1))  flag=false; 
                                    j++;
                            }
                            if (((a[i-1][j+1])==1) || ((a[i][j+1])==1) || ((a[i+1][j+1])==1))  flag=false;
                            }
       
       return flag;
}
angelgreys
9 / 9 / 0
Регистрация: 29.10.2012
Сообщений: 27
31.10.2012, 23:07     В чем разница между return и return false/true #6
замени
C++
1
int func (int k, int i, int j, bool flag, int p, int a[12][12])
на
C++
1
bool func (int k, int i, int j, bool flag, int p, int a[12][12])
ruslan_net
4 / 4 / 1
Регистрация: 18.09.2012
Сообщений: 38
01.11.2012, 02:25     В чем разница между return и return false/true #7
это да. Но еще что то flag всеравно не возвращается
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
01.11.2012, 02:45     В чем разница между return и return false/true #8
А зачем ты bool flag передаешь в функцию, если не используешь его ?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.11.2012, 03:12     В чем разница между return и return false/true #9
Цитата Сообщение от ruslan_net Посмотреть сообщение
это да. Но еще что то flag всеравно не возвращается
Из чего видно?
ruslan_net
4 / 4 / 1
Регистрация: 18.09.2012
Сообщений: 38
01.11.2012, 22:12     В чем разница между return и return false/true #10
Цитата Сообщение от alsav22 Посмотреть сообщение
Из чего видно?
Когда пошагово просматриваю тогда и видно

Добавлено через 4 минуты
Цитата Сообщение от lazybiz Посмотреть сообщение
А зачем ты bool flag передаешь в функцию, если не используешь его ?
flag передеется в функцию со значением true, и если возвращается из функции true(т.е. ни чего не меняеся) то выполняется одно, а если false то другое. Почемуто возвращается всегда true
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
01.11.2012, 22:25     В чем разница между return и return false/true #11
Если всегда возвращается true, значит никогда не выполняется условие. Логично же.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.11.2012, 23:14     В чем разница между return и return false/true #12
Цитата Сообщение от ruslan_net Посмотреть сообщение
Почемуто возвращается всегда true
Зачем тогда это писать?
Цитата Сообщение от ruslan_net Посмотреть сообщение
Но еще что то flag всеравно не возвращается
Добавлено через 1 минуту
Если true всегда возвращается, значит не срабатывает ни один if. Проверяйте условия.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
02.11.2012, 03:17     В чем разница между return и return false/true #13
Цитата Сообщение от alsav22 Посмотреть сообщение
Если true всегда возвращается, значит не срабатывает ни один if. Проверяйте условия.
Цитата Сообщение от lazybiz Посмотреть сообщение
Если всегда возвращается true, значит никогда не выполняется условие. Логично же.
Зачем человека путать? Под словом "возвращается" он полагает не return, а наивно считает, что флаг, переданный в функцию в качестве одного из аргументов это не копия, а оригинал той переменной, которую он прописывал в качестве параметра, передаваемого функции.

Короче, он наивно думает, что так работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int func(bool flag){
  if (...) flag=false;
 return flag;
}
int main(){
  bool flag=true;
  func(flag);
  if (!flag){
    //какое-то действие в надежде, что  flag изменился
  }
  //...
}
Нет, так не работает. Параметры в функцию передаются как копии значений. Что бы ты с ними внутри не делал, это не повлияет на переменные, из которых они копировались при вызове функции.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.11.2012, 03:55     В чем разница между return и return false/true #14
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Зачем человека путать?
Это он всех запутал
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Под словом "возвращается" он полагает не return
Если бы он так полагал, то зачем ему делать в коде return flag ?

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Короче, он наивно думает, что так работает:
Как предположение годится, а как на самом деле ТС обрабатывает возвращаемое значение (и обрабатывает ли вообще) неизвестно. Может пояснит?
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
02.11.2012, 11:30     В чем разница между return и return false/true #15
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Под словом "возвращается" он полагает не return, а наивно считает, что флаг, переданный в функцию в качестве одного из аргументов это не копия, а оригинал той переменной, которую он прописывал в качестве параметра, передаваемого функции.
Ну мы ж не телепаты. Как спросил так и ответили.
MrGrig
176 / 159 / 2
Регистрация: 08.10.2012
Сообщений: 422
02.11.2012, 13:11     В чем разница между return и return false/true #16
инициализируйте флаг внутри функции,раз у вас все время он одинаковый на входе, вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
bool func (int k, int i, int j, int p, int a[12][12])
{
       bool flag=true;
* * * *if (k==0)
* * * * * * * * * * {
* * * * * * * * * * * * * * if (((a[i-1][j-1])==1) || ((a[i-1][j])==1) || ((a[i-1][j+1])==1)) *flag=false;
* * * * * * * * * * * * * * for(int k=1;k<=p;k++)
* * * * * * * * * * * * * * {
* * * * * * * * * * * * * * * * * * if (((a[i][j-1])==1) || ((a[i][j])==1) || ((a[i][j+1])==1)) flag=false;
* * * * * * * * * * * * * * * * * * i++;
* * * * * * * * * * * * * * }
* * * * * * * * * * * * * * if (((a[i+1][j-1])==1) || ((a[i+1][j])==1) || ((a[i+1][j+1])==1)) *flag=false;
* * * * * * * * * * * * * * }
* * * * else
* * * * * * * * * * {
* * * * * * * * * * * * * * *if (((a[i-1][j-1])==1) || ((a[i][j-1]==1)) || ((a[i+1][j-1])==1)) *flag=false;
* * * * * * * * * * * * * * for(int k=1;k<=p;k++)
* * * * * * * * * * * * * * {
* * * * * * * * * * * * * * * * if (((a[i-1][j])==1) || ((a[i][j])==1) || ((a[i+1][j])==1)) *flag=false; 
* * * * * * * * * * * * * * * * * * j++;
* * * * * * * * * * * * * * }
* * * * * * * * * * * * * * if (((a[i-1][j+1])==1) || ((a[i][j+1])==1) || ((a[i+1][j+1])==1)) *flag=false;
* * * * * * * * * * * * * * }
return flag;
}
хотя по большому счету, если например вызывать не так
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
bool func(bool flag){
* if (...) flag=false;
*return flag;
}
int main(){
* bool flag=true;
* func(flag);
* if (!flag){
* * //какое-то действие в надежде, что *flag изменился
* }
* //...
}
а так
C++
1
2
3
4
5
6
int main(){
* bool flag=true;
* if (!func(flag)){
* /*...*/ 
  }
}
то работать будет и ваша версия(только тип у функции поменять на bool) ибо вернется копия, но копия уже отличная от true (если конечно условия выполняются)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2012, 13:35     В чем разница между return и return false/true
Еще ссылки по теме:

C++ В чем разница между [] и * ?
C++ В чем разница между push_back и push?
C++ В чем разница между инициализацией и присваиванием?

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

Или воспользуйтесь поиском по форуму:
Afflicted
Обитатель форума
199 / 182 / 8
Регистрация: 28.10.2012
Сообщений: 538
02.11.2012, 13:35     В чем разница между return и return false/true #17
return используется для возвращения значения ф-ции.
Пару примеров:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
bool MoreZero(int idx)
{
    if (idx > 0)
        return true
    else
        return false;
}
 
inline int Sum(int X, int Y)
{
    int Z;
    
    Z = (X + Y) / 2;
    
    return Z;
}
 
void outMessage (string text)
{
    if (!text)
        return;
    
    cout << text << endl;
}
 
int main (void)
{
    int n, i;
    string str;
    
    cin >> n;
    
    if (MoreZero(n))
        cout << "Число больше нуля" << endl;
    else 
        cout << "Число меньше нуля" << endl;
        
    i = Sum(n, (n+2));
    str << "число после выполнения арифм. операций равно" << i;
    outMessage (str);
    
    return 0;
}
Yandex
Объявления
02.11.2012, 13:35     В чем разница между return и return false/true
Ответ Создать тему
Опции темы

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