C/C++
Что такое bool в C++
Пожалуйста, объясните такими словами, чтобы очень легко было понять. В с++ я 0, просто хочу понять
логический тип данных, который принимает два значения 0 - ложь, 1 - истина. Занимает 1 байт. Если присвоить переменной этого типа отличное от нуля значение то оно автоматически заменится на 1
Ник К
Где мы модем связаться?
Это логический тип, и он есть не только в C++
bool - это тип данных, переменные которого принимают два значения- true и false и реализованный однобайтными (восьмибитовыми) переменными. А так как в С++ есть достаточно строгая проверка типов, но не существует строгой типизации, то переменные этого типа можно заменять переменными целого типа, которые всё равно приводятся к однобайтному числовому виду со значениями 0 и 1 в случаях false и true соответственно. В языке Pascal такая конвертация невозможна, а в С++ вполне допустимо в случае необходимости писать следующее:
bool a; int b = 25; a = b%2;
cout << ((a) ? "odd" : "even") << endl;
Или можно сделать такую логическую функцию проверки числа на чётность:
bool even_or_odd(long x) { return x & 1; }
На примере этой функции отчётливо проявляется отсутствие в С++ строгой типизации.
Хранить большие логические данные в массивах типа bool -не очень хорошая идея, потому что при этом тратится в восемь раз больше памяти по сравнению с логическими данными, упакованными в битовые структуры.
bool a; int b = 25; a = b%2;
cout << ((a) ? "odd" : "even") << endl;
Или можно сделать такую логическую функцию проверки числа на чётность:
bool even_or_odd(long x) { return x & 1; }
На примере этой функции отчётливо проявляется отсутствие в С++ строгой типизации.
Хранить большие логические данные в массивах типа bool -не очень хорошая идея, потому что при этом тратится в восемь раз больше памяти по сравнению с логическими данными, упакованными в битовые структуры.
Олег Данильев
Вообще-то return x&1; возвращает true в случае нечётности х.
Максим Клюзов
Вместо массива bool можно использовать bitset, это гораздо лучше. Это булевский вектор, в котором булевские значения обычно записываются побитно. Да и есть в нем готовые встроенные методы работы с таким булевским массивом.
Бул - обычная однобитная переменная. В силу своей однобитности может принимать только два значения - 0 и 1. По умолчанию она так и отображается через функции вывода, в математических формулах и т. д. как число.
специальный тип bool. Допустимыми значениями этого типа являются только true и false, при этом других значений у переменной данного типа быть не может.
Похожие вопросы
- C++ Выведите в порядке возрастания все простые числа на отрезке [l;r]. Оформите решение в виде функции bool
- Вопрос про язык программирования C++. bool*.
- Указатель, массив, bool
- Какие из этих книг вы посоветуете прочесть в первую очередь чтобы повысить свои знания в C/C++?
- Задача по C++
- День добрый \[-_-]/ вопрос по вузовскому программированию на си(C)
- Программирование C++ ПРОШУ ПОМОЧЬ!
- Почему создатель Linux Линус Торвальдс называет C++ ужасным языком, а ядро ОС Linux пишется только на Си?
- Задача на C++ (Остатки).
- Сделать перестановку чисел с помощью функции в C++, но у меня получается чепуха