В VС++ у нас есть тип данных "BOOL", который может принимать значение TRUE или FALSE, и у нас есть тип данных "bool", который может принимать значение true или false.
В чем разница между ними и когда должен использоваться каждый тип данных?
Ответ 1
bool - это встроенный тип С++, а bool - тип, специфичный для Microsoft, который определяется как int. Вы можете найти его в windef.h:
Значения для bool равны true и false, тогда как для bool вы можете использовать любое значение int, хотя макросы true и false определены в заголовке windef.h.
Это означает, что оператор sizeof даст 1 для bool (стандартные состояния, однако, что размер bool определяется реализацией) и 4 для bool.
У 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.
Обратите внимание, что это нецелесообразно, так как это сильно разрушает общую читаемость кода, но это то, что вы можете встретить, и вам будет интересно, почему это так.