What is the difference between BOOL and bool?

2020-02-03 05:20发布

In VC++ we have the data type “BOOL” which can assume the value TRUE or FALSE, and we have the data type “bool”, which can assume the value true or false.

What is the difference between them and when should each data type be used?

3条回答
别忘想泡老子
2楼-- · 2020-02-03 05:37

To add to what luvieere has said, you can return something other than TRUE or FALSE from a function returning a BOOL e.g.,

BOOL myFunc(int a)
{
    if (a < 3) return FALSE;
    else if (a > 3) return TRUE;
    else return 2;
}

And this is possible because a BOOL is essentially an int.

Please note that this is not advisable as it severely destroys the general readability of code but it is something you can come across and you will be wondering why it is so.

查看更多
可以哭但决不认输i
3楼-- · 2020-02-03 05:50

bool is a built-in C++ type while BOOL is a Microsoft specific type that is defined as an int. You can find it in windef.h:

typedef int                 BOOL;

#ifndef FALSE
#define FALSE               0
#endif

#ifndef TRUE
#define TRUE                1
#endif

The values for a bool are true and false, whereas for BOOL you can use any int value, though TRUE and FALSE macros are defined in the windef.h header.

This means that the sizeof operator will yield 1 for bool (the standard states, though, that the size of bool is implementation defined), and 4 for BOOL.

Source: Codeguru article

查看更多
萌系小妹纸
4楼-- · 2020-02-03 05:52

Windows API had this type before bool was thrown into C++. And that's why it still exits in all Windows function that take BOOL. C doesn't support bool data-type, therefore BOOL has to stay.

查看更多
登录 后发表回答