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

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

Войти
Регистрация
Восстановить пароль
 
[C++] Return
4 / 4 / 1
Регистрация: 11.09.2012
Сообщений: 110
#1

Типы bool и int - C++

07.01.2013, 21:19. Просмотров 568. Ответов 10
Метки нет (Все метки)

Зачем использовать тип bool если можно сделать тоже самое с помощью типа int
Например объявляем переменую типа int если ее значение равно нулю то ложь, если единице то истина.

C++
1
2
3
4
5
6
7
8
9
10
11
int x = 0;//Ложь
x = 1;//Истина
 
if(x = 1)
{
cout << "Истина";
}
else
{
cout << "Ложь";
}
Для чего тогда создан тип bool?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2013, 21:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Типы bool и int (C++):

типы данных bool - C++
уважаемые подскажите почему не компилирует функция &quot;bool shod &quot; можно ли ее чем заминить и вообще что такое shod ?

Конфликт типов (int, double, bool) - C++
Есть простейший класс class A { public: A( long ) {} A( double ){} A( bool ) {} } и при создании обьекта new...

bool + int + char в одну переменную - C++
Подскаждите кто может, как три разных значения, к примеру : &quot;ВАСЯ&quot;, 123, false закинуть в область памяти, на которую указывает...

Несовместимые типы операндов int и char - C++
Всем здравия! Ребят я запарился уже помогите пожалуйста! Учусь в универе необходимо создать БД в с++. Выдает ошибку при вводе &quot;даты...

не работает bool xor(bool a, bool b) - C++
Учусь по &quot;Базовому курсу&quot; Герберта Шилда #include &lt;iostream&gt; bool xor(bool a, bool d); int main() { bool p, q; cout...

Ошибка: несовместимые типы операндов ("int *" и "int") - C++
Дан список не менее 8 рабочих, ввести фамилию, кол. лет, стаж работы, сколько до пенсии. Вывести кому осталось меньше 15 лет до пенсии. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
07.01.2013, 21:23 #2

Не по теме:

if(x = 1)

к слову это не сравнение, вы правы что истину и ложь можно представить ввиде 0 и 1, поэтому для порядка существует тип bool
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
07.01.2013, 21:25 #3
Цитата Сообщение от [C++
Return;3965110]Для чего тогда создан тип bool?
для удобства.
Ev[G]eN
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
07.01.2013, 21:26 #4
кому как удобно, я думаю.
лично мне гораздо удобнее использовать int
[C++] Return
4 / 4 / 1
Регистрация: 11.09.2012
Сообщений: 110
07.01.2013, 21:36  [ТС] #5
Цитата Сообщение от Nixy Посмотреть сообщение

Не по теме:

if(x = 1)

к слову это не сравнение, вы правы что истину и ложь можно представить ввиде 0 и 1, поэтому для порядка существует тип bool

Да, правильно будет if(x == 1), быстро писал, пропустил второй знак. Отредактировать нельзя.

Добавлено через 2 минуты
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
кому как удобно, я думаю.
лично мне гораздо удобнее использовать int
Я тоже не использую bool, мне удобнее создать int и использовать как 0 ложь, 1 истина.
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
07.01.2013, 21:37 #6
в чем удобство-то?
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
07.01.2013, 21:38 #7
C++
1
2
3
4
5
6
7
8
9
bool isPrime(int n){
 //код определения простоты числа n
}
int isPrime(int n){
 //код определения простоты числа n
}
double isPrime(int n){
 //код определения простоты числа n
}
согласитесь первый вариант куда логичней чем два других, хотя во всех случаях можем возврашать 0 , 1
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
07.01.2013, 21:46 #8
Цитата Сообщение от Nixy Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
bool isPrime(int n){
 //код определения простоты числа n
}
int isPrime(int n){
 //код определения простоты числа n
}
double isPrime(int n){
 //код определения простоты числа n
}
согласитесь первый вариант куда логичней чем два других, хотя во всех случаях можем возврашать 0 , 1
Когда я пишу
C++
1
2
3
4
5
6
if (isPrime(1263162531)) {
    // никогда не выполнится
}
else {
    // ...
}
мне как-то по-барабану, какой там вариант из этих (скажите спасибо слабой типизации Плюсов).

Но если смотреть шире, то bool — это лишь ещё одна бронепластинка на ногу. Потому что вот когда-то кто-то тоже думал "А нафиг нам специальный bool. И вообще, не надо присваивать единичку, если мы хотим присвоить true. Ассемблерная инструкция на байт больше выходит. Давайте лучше сделаем инкремент. Тогда ж точно: если ноль (ложь), то будет один (истина), а если один, то всё так же будет истина. И байтик сэкономим". А потом переполнение, 255 + 1 = 0 и кто-то получает смертельную дозу радиации. Да, я про Therac-25.
Igor3D
957 / 490 / 47
Регистрация: 01.10.2012
Сообщений: 2,432
07.01.2013, 21:50 #9
А почему int - можно использовать и float или double. Почему же не делаете так? Наверное дело не в "можно-нельзя" а "как лучше". Написав bool Вы показываете что эта переменная напр для арифметики не предназначена и даете возможность компилятору (пусть не всякому) помочь. А написав int - не показываете ничего.
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
07.01.2013, 21:52 #10
ну например функция возвращяет ложь или истину, а программист использовал int вместо bool, согласитесь, так сразу и не поймёш что функция возвращяет логическое значение.
vua72
415 / 415 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
08.01.2013, 16:50 #11
наверное для ясности ума и изложения, т.к. явная работа с типом bool показывает намерение проверить истинность выражения, а не численное его значение.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2013, 16:50
Привет! Вот еще темы с ответами:

Объявите указатели на следующие типы int, char, double - проинициализируйте их, выведите их значения на экран. - C++
Инициализация указателей. Объявите указатели на следующие типы int, char, double - проинициализируйте их, выведите их значения на экран. ...

Изменить значение bool a = true в bool a = false - C++
// Логическое выражения - варианты #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main() { ...

как правильно понять тип bool ? bool true(const string &str) и что дает это значение ? - C++
задам может глупый вопрос, но прошу ответить. как правильно понять тип bool ? bool true(const string &amp;str) и что дает это...

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec - C++
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H #include &lt;iostream&gt; using...


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

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

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