Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/59: Рейтинг темы: голосов - 59, средняя оценка - 4.71
BondEros
0 / 0 / 0
Регистрация: 15.10.2009
Сообщений: 10
#1

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

26.10.2009, 14:15. Просмотров 10590. Ответов 16
Метки нет (Все метки)

Привет всем. Вот подскажите плиз)

C++
1
2
3
return;
return false;
return true;
расскажите пожалуйста об етих операторах.. чем они отличаются от друг друга

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2009, 14:15
Ответы с готовыми решениями:

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

Чем в функции void можно заменить инструкцию return 0; ?
Чем в функции void можно заменить return 0;? Чтобы выключать приложение

В чем разница между X x; и X x()?
Корректный ли этот ответ?

В чем разница между С и С++
Возник вопрос в чем жи разница между С и С++ кроме того, что в С++ есть классы...

В чем разница между [] и * ?
Думал, что ни в чем, но когда попытался сделать так: (в файле 1) char lc; в...

16
ximerus
6 / 6 / 1
Регистрация: 17.07.2009
Сообщений: 5
26.10.2009, 14:47 #2
Оператор return; это оператор возвращения из функции и то что стоит после него возвращается в функцию из которой он вызывался! return false; возвращает ложь то есть 0, а return true; возвращает истину то 1!
2
rangerx
1941 / 1550 / 478
Регистрация: 31.05.2009
Сообщений: 2,913
26.10.2009, 16:12 #3
Лучший ответ Сообщение было отмечено как решение

Решение

return;
применяется для досрочного выхода из void функции
return false;
return true;
возращает значение из функции булевого типа.
4
ximerus
6 / 6 / 1
Регистрация: 17.07.2009
Сообщений: 5
26.10.2009, 17:12 #4
ну вот более опытный товарищь, разьяснил все в деталяХ!
2
ruslan_net
4 / 4 / 1
Регистрация: 18.09.2012
Сообщений: 38
31.10.2012, 23:05 #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;
}
0
angelgreys
9 / 9 / 3
Регистрация: 29.10.2012
Сообщений: 27
31.10.2012, 23:07 #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])
1
ruslan_net
4 / 4 / 1
Регистрация: 18.09.2012
Сообщений: 38
01.11.2012, 02:25 #7
это да. Но еще что то flag всеравно не возвращается
0
castaway
Эксперт С++
4927 / 3034 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
01.11.2012, 02:45 #8
А зачем ты bool flag передаешь в функцию, если не используешь его ?
0
alsav22
5439 / 4834 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
01.11.2012, 03:12 #9
Цитата Сообщение от ruslan_net Посмотреть сообщение
это да. Но еще что то flag всеравно не возвращается
Из чего видно?
0
ruslan_net
4 / 4 / 1
Регистрация: 18.09.2012
Сообщений: 38
01.11.2012, 22:12 #10
Цитата Сообщение от alsav22 Посмотреть сообщение
Из чего видно?
Когда пошагово просматриваю тогда и видно

Добавлено через 4 минуты
Цитата Сообщение от lazybiz Посмотреть сообщение
А зачем ты bool flag передаешь в функцию, если не используешь его ?
flag передеется в функцию со значением true, и если возвращается из функции true(т.е. ни чего не меняеся) то выполняется одно, а если false то другое. Почемуто возвращается всегда true
0
castaway
Эксперт С++
4927 / 3034 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
01.11.2012, 22:25 #11
Если всегда возвращается true, значит никогда не выполняется условие. Логично же.
0
alsav22
5439 / 4834 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
01.11.2012, 23:14 #12
Цитата Сообщение от ruslan_net Посмотреть сообщение
Почемуто возвращается всегда true
Зачем тогда это писать?
Цитата Сообщение от ruslan_net Посмотреть сообщение
Но еще что то flag всеравно не возвращается
Добавлено через 1 минуту
Если true всегда возвращается, значит не срабатывает ни один if. Проверяйте условия.
0
Kuzia domovenok
2243 / 2012 / 457
Регистрация: 25.03.2012
Сообщений: 7,075
Записей в блоге: 1
02.11.2012, 03:17 #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 изменился
  }
  //...
}
Нет, так не работает. Параметры в функцию передаются как копии значений. Что бы ты с ними внутри не делал, это не повлияет на переменные, из которых они копировались при вызове функции.
1
alsav22
5439 / 4834 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
02.11.2012, 03:55 #14
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Зачем человека путать?
Это он всех запутал
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Под словом "возвращается" он полагает не return
Если бы он так полагал, то зачем ему делать в коде return flag ?

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Короче, он наивно думает, что так работает:
Как предположение годится, а как на самом деле ТС обрабатывает возвращаемое значение (и обрабатывает ли вообще) неизвестно. Может пояснит?
0
castaway
Эксперт С++
4927 / 3034 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
02.11.2012, 11:30 #15
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Под словом "возвращается" он полагает не return, а наивно считает, что флаг, переданный в функцию в качестве одного из аргументов это не копия, а оригинал той переменной, которую он прописывал в качестве параметра, передаваемого функции.
Ну мы ж не телепаты. Как спросил так и ответили.
0
MrGrig
177 / 160 / 38
Регистрация: 08.10.2012
Сообщений: 422
02.11.2012, 13:11 #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 (если конечно условия выполняются)
0
Afflicted
Обитатель форума
199 / 182 / 54
Регистрация: 28.10.2012
Сообщений: 543
02.11.2012, 13:35 #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;
}
0
02.11.2012, 13:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2012, 13:35

В чем разница между new и malloc()?
Всем доброго дня ! Начал читать книгу Пахомов Б. &quot;C/C++ и MS Visual C++ 2008...

В чем разница между malloc и new?
в чем разница? что лучше использовать?

В чем разница между push_back и push?
Подскажите пожалуйста, в чем состоит отличие Push_back и просто Push? Они оба...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

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