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

Тип bool - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 153, средняя оценка - 4.69
alfer
 Аватар для alfer
1 / 1 / 0
Регистрация: 21.04.2010
Сообщений: 38
26.04.2010, 02:58     Тип bool #1
Может кто-нибудь поможет на простейшем но понятном примере объяснить как работает тип bool. Знаю что это тип может быть ложный или истинный но что-то никак его работу не могу понять.... для чего он нужен...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
26.04.2010, 03:03     Тип bool #2
C++
1
2
3
4
5
6
7
8
9
10
11
bool flag;
int n;
std::cin>>n;
if(n > 0)
    flag = true;
else
    flag = false;
if(flag) //flag == true
    std::cout<<"n > 0";
else
    std::cout<<"n <= 0";
Он используется для проверки логических условий или как флаг состояний, как выключатель - ВКЛ и ВЫКЛ (true и false)
KHAV
5 / 5 / 1
Регистрация: 19.04.2010
Сообщений: 18
26.04.2010, 03:05     Тип bool #3
Пусть my_variable имеет тип bool
C
1
2
3
4
5
if (my_variable) {
  printf("True!\n");
} else {
  printf("False!\n");
}
равнозначен коду
C
1
2
3
4
5
if (my_variable != 0) {
  printf("True!\n");
} else {
  printf("False!\n");
}
alfer
 Аватар для alfer
1 / 1 / 0
Регистрация: 21.04.2010
Сообщений: 38
26.04.2010, 03:22  [ТС]     Тип bool #4
Т.е. по умолчанию он получается является как true?

C++
1
2
3
4
5
6
7
8
if(n > 0)
    flag = true;
else
    flag = false;
if(flag) //flag == true - вот здесь
    std::cout<<"n > 0";
else
    std::cout<<"n <= 0";
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
26.04.2010, 03:22     Тип bool #5
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
int main()
{
    bool a = 1 < 2;
    bool b = 1 > 2;
 
    std::cout << std::boolalpha << a << std::endl;
    std::cout << std::boolalpha << b << std::endl;
    return 0;
}
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
26.04.2010, 03:27     Тип bool #6
alfer, у него нету значения по умолчанию. Любое значение отличное от 0 - true, равное 0 - false.
Просто при проверке сравнение с true можно опускать, так же как и сравнение с false, но тогда для false надо писать с отрицанием
C++
1
if(!flag)
rangerx, ну зачем же так...
alfer
 Аватар для alfer
1 / 1 / 0
Регистрация: 21.04.2010
Сообщений: 38
26.04.2010, 03:32  [ТС]     Тип bool #7
Цитата Сообщение от M128K145 Посмотреть сообщение
alfer, у него нету значения по умолчанию. Любое значение отличное от 0 - true, равное 0 - false.
Просто при проверке сравнение с true можно опускать, так же как и сравнение с false, но тогда для false надо писать с отрицанием
А кажись понял, т.е. если ставим просто (flag) то это истина, если (!flag) то ложное. Ну т.е. как и везде отрицаем знаком !
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
26.04.2010, 03:37     Тип bool #8
Запись
C++
1
2
3
4
5
if (flag == true) 
// эквивалентна записям 
// if (flag)
// if (flag != 0)
// if (flag != false)
Запись
C++
1
2
3
4
5
if (flag == false)
// эквивалентна записям 
// if (!flag) 
// if (flag == 0)
// if (flag != true)
Цитата Сообщение от alfer Посмотреть сообщение
если ставим просто (flag) то это истина, если (!flag) то ложное
не "то это истина", а "проверка на истинность условия"

Цитата Сообщение от alfer Посмотреть сообщение
отрицаем знаком !
Да, это логическое отрицание
C++
1
2
3
&& - логическое И
|| - логическое ИЛИ
!  - логическое НЕ
alfer
 Аватар для alfer
1 / 1 / 0
Регистрация: 21.04.2010
Сообщений: 38
26.04.2010, 03:39  [ТС]     Тип bool #9
M128K145, вот за последнее разъяснение огромное спасибо!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2010, 05:37     Тип bool
Еще ссылки по теме:

C++ тип bool ошибка обработки
Тип BOOL C++
Можно ли каким-то образом наследовать тип bool C++

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

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
26.04.2010, 05:37     Тип bool #10
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdbool.h> /* это для C99 */
 
bool func(int a, int b)
{
    return a > b ? true : false;
}
 
...
 
if (func(1, 2) == false) {
    printf("error\n");
    exit(EXIT_FAILURE); /* можно return EXIT_FAILURE */
}
 
printf("right!\n");
то есть это не только для флажков
Yandex
Объявления
26.04.2010, 05:37     Тип bool
Ответ Создать тему
Опции темы

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