В VС++ у нас есть тип данных "BOOL", который может принимать значение TRUE или FALSE, и у нас есть тип данных "bool", который может принимать значение true или false.
В чем разница между ними и когда должен использоваться каждый тип данных?
В VС++ у нас есть тип данных "BOOL", который может принимать значение TRUE или FALSE, и у нас есть тип данных "bool", который может принимать значение true или false.
В чем разница между ними и когда должен использоваться каждый тип данных?
bool
- это встроенный тип С++, а bool
- тип, специфичный для Microsoft, который определяется как int
. Вы можете найти его в windef.h
:
typedef int BOOL;
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
Значения для bool
равны true
и false
, тогда как для bool
вы можете использовать любое значение int
, хотя макросы true
и false
определены в заголовке windef.h
.
Это означает, что оператор sizeof
даст 1 для bool
(стандартные состояния, однако, что размер bool
определяется реализацией) и 4 для bool
.
Источник: Статья Кодегуру
У Windows API был этот тип до того, как bool
был добавлен в С++. И поэтому он все же выходит во все функции Windows, которые принимают BOOL. C не поддерживает тип данных bool
, поэтому bool
должен оставаться.
Чтобы добавить к сказанному luvieere, вы можете вернуть что-то другое, кроме TRUE
или FALSE
из функции, возвращающей BOOL
например,
BOOL myFunc(int a)
{
if (a < 3) return FALSE;
else if (a > 3) return TRUE;
else return 2;
}
И это возможно, потому что a BOOL
по существу является int
.
Обратите внимание, что это нецелесообразно, так как это сильно разрушает общую читаемость кода, но это то, что вы можете встретить, и вам будет интересно, почему это так.