для сопряжения движка, написанного на Си и библиотек, написанных на С++. В чистом Си нет такой переменной BOOL, и там сами делают, кто во что горазд. Часть таких булов попала в интерфейс. А в С++ bool равен одному байту. И чтобы предотвратить возможные несовпадения в размерах интерфейса запилили абстрактный тип 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.
ONeiLL
Нет, не норм. Нельзя инты кастить в булы. Это переменные совершенно разных назначений.
Я ещё понимаю - std::vector<bool> для экономии памяти (там 1 бул занимает 1 бит), но обычно если есть нужда таких кастов - не проще ли везде инты юзать?
Я вот в последнее время в J2ME стал использовать byte вместо boolean, но это чисто для экономии памяти. ЕМНИП boolean в ней занимает в четыре раза больше места, так как в виртуальной машине интерпретируется как int
Дядя Миша писал: Оно в экономию вылиывается, когда этих булов несколько тысяч, как виздата.
Ну да. Векторы обычно и используют, когда данных много.
Цитата:
Дядя Миша писал: Но ЕМНИП, наружу нельзя получить число точнее 80 бит.
Почему нельзя? Можно. От языка зависит. Есть версии С/С++, которые поддерживают 128-битный тип long double.
Цитата:
KiQ писал: стал использовать byte вместо boolean, но это чисто для экономии памяти
В 21 веке не память надо экономить, а процессорные такты. Современные процессоры эффективно работают с 32-битными целыми числами (а х64-процессоры - ещё и с 64-битными).