HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > BOOL, TRUE, FALSE
почему юзаются BOOL а не bool
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 26

Рейтинг



BOOL, TRUE, FALSE

Вопрос может глупый, но я не могу понять, зачем в ХЛ юзается BOOL вместо обычного bool. В чём профит от использования int вместо bool?

Сообщить модератору | | IP: Записан
Сообщение: 119369

Старое сообщение 03-05-2013 12:20
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32310
Нанёс повреждений: 392 ед.

Рейтинг



для сопряжения движка, написанного на Си и библиотек, написанных на С++. В чистом Си нет такой переменной BOOL, и там сами делают, кто во что горазд. Часть таких булов попала в интерфейс. А в С++ bool равен одному байту. И чтобы предотвратить возможные несовпадения в размерах интерфейса запилили абстрактный тип BOOL.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 119371

Старое сообщение 03-05-2013 13:16
-
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 26

Рейтинг



Ясно, спасибо

Сообщить модератору | | IP: Записан
Сообщение: 119373

Старое сообщение 03-05-2013 13:20
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34576
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
Дядя Миша писал:
А в С++ bool равен одному байту

Implementation-dependent.
В стандарте об этом ничего нет.
Цитата:
ONeiLL писал:
В чём профит от использования int вместо bool?

Ну, скажем, если TRUE равно 1, то оно везде равно 1.
А true (в с++) равно ~0, и его значение зависит от размера переменной в байтах (для int, например, это будет -1).
Ещё с интами можно эффективно производить битовые операции. При попытке кастов булов будет выводится знаменитое предупреждение C4800.

Добавлено 03-05-2013 в 20:36:

Вообще программисты, разрабатывающие низкоуровневый софт (в том числе игровой движок), очень не любят ненативные типы данных. А нативных - всего 4: int8, int16, int32 и float. Да на 64-битных архитектурах добавляется int64.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 119374

Старое сообщение 03-05-2013 13:36
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32310
Нанёс повреждений: 392 ед.

Рейтинг



Почему четыре? Еще дабл есть.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 119378

Старое сообщение 03-05-2013 13:39
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34576
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Дядя Миша
Есть и quadruple (регистры сопроцессора 128-битные), но в движках всё-таки обычно одинарную точность используют.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 119381

Старое сообщение 03-05-2013 14:02
-
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 26

Рейтинг



Из всего я юзаю:
int
float
bool
char

Цитата:
XaeroX писал:
При попытке кастов булов будет выводится знаменитое предупреждение C4800

C++ Source Code:
int a = 0;
bool b;
b = ( a != 0 );

Вот так норм?

Сообщить модератору | | IP: Записан
Сообщение: 119383

Старое сообщение 03-05-2013 14:12
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34576
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


ONeiLL
Нет, не норм. Нельзя инты кастить в булы. Это переменные совершенно разных назначений.
Я ещё понимаю - std::vector<bool> для экономии памяти (там 1 бул занимает 1 бит), но обычно если есть нужда таких кастов - не проще ли везде инты юзать?

__________________

Сообщить модератору | | IP: Записан
Сообщение: 119388

Старое сообщение 03-05-2013 14:38
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32310
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
XaeroX писал:
Есть и quadruple (регистры сопроцессора 128-битные)

Я помню. Но ЕМНИП, наружу нельзя получить число точнее 80 бит.

Добавлено 03-05-2013 в 18:55:

Цитата:
XaeroX писал:
Я ещё понимаю - std::vector<bool> для экономии памяти (там 1 бул занимает 1 бит)

Оно в экономию вылиывается, когда этих булов несколько тысяч, как виздата. А так их обычно на всё приложение штук 30-40.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 119390

Старое сообщение 03-05-2013 14:55
-
KiQ
Житель форума

Дата регистрации: Aug 2010
Проживает: Смоленск, Москва
Сообщений: 2088

Рейтинг



Я вот в последнее время в J2ME стал использовать byte вместо boolean, но это чисто для экономии памяти. ЕМНИП boolean в ней занимает в четыре раза больше места, так как в виртуальной машине интерпретируется как int

__________________
-Brain is dead-

Сообщить модератору | | IP: Записан
Сообщение: 119392

Старое сообщение 03-05-2013 14:58
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34576
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
Дядя Миша писал:
Оно в экономию вылиывается, когда этих булов несколько тысяч, как виздата.

Ну да. Векторы обычно и используют, когда данных много.
Цитата:
Дядя Миша писал:
Но ЕМНИП, наружу нельзя получить число точнее 80 бит.

Почему нельзя? Можно. От языка зависит. Есть версии С/С++, которые поддерживают 128-битный тип long double.
Цитата:
KiQ писал:
стал использовать byte вместо boolean, но это чисто для экономии памяти

В 21 веке не память надо экономить, а процессорные такты. Современные процессоры эффективно работают с 32-битными целыми числами (а х64-процессоры - ещё и с 64-битными).

__________________

Сообщить модератору | | IP: Записан
Сообщение: 119393

Старое сообщение 03-05-2013 15:07
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32310
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
XaeroX писал:
Современные процессоры эффективно работают с 32-битными целыми числами (а х64-процессоры - ещё и с 64-битными).

Кэээп?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 119396

Старое сообщение 03-05-2013 16:33
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34576
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Дядя Миша
Это надо повторять постоянно, в целях вакцинопрофилактики.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 119400

Старое сообщение 03-05-2013 16:56
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 13:07. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > BOOL, TRUE, FALSE
почему юзаются BOOL а не bool
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024