I got this doubt while writing some code. Is ‘bool’ a basic datatype defined in the C++ standard or is it some sort of extension provided by the compiler ? I got this doubt because Win32 has ‘BOOL’ which is nothing but a typedef of long. Also what happens if I do something like this:
int i = true;
Is it ‘always’ guaranteed that variable i will have value 1 or is it again depends on the compiler I am using ? Further for some Win32 APIs which accept BOOL as the parameter what happens if I pass bool variable?
bool is a fundamental datatype in C++. Converting
trueto an integer type will yield 1, and convertingfalsewill yield 0 (4.5/4 and 4.7/4). In C, until C99, there was no bool datatype, and people did stuff likeSo did the Windows API. Starting with C99, we have
_Boolas a basic data type. Includingstdbool.hwilltypedef#definethat tobooland provide the constantstrueandfalse. They didn’t make bool a basic data-type (and thus a keyword) because of compatibility issues with existing code.