Подтвердить что ты не робот

Разница BOOL и bool?

В VС++ у нас есть тип данных "BOOL", который может принимать значение TRUE или FALSE, и у нас есть тип данных "bool", который может принимать значение true или false.

В чем разница между ними и когда должен использоваться каждый тип данных?

4b9b3361

Ответ 1

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.

Источник: Статья Кодегуру

Ответ 2

У Windows API был этот тип до того, как bool был добавлен в С++. И поэтому он все же выходит во все функции Windows, которые принимают BOOL. C не поддерживает тип данных bool, поэтому bool должен оставаться.

Ответ 3

Чтобы добавить к сказанному 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.

Обратите внимание, что это нецелесообразно, так как это сильно разрушает общую читаемость кода, но это то, что вы можете встретить, и вам будет интересно, почему это так.