bool和BOOL的区别

1、类型不同       

BOOL为int型       

bool为布尔型   

2、长度不同       

bool只有一个字节       

BOOL长度视实际环境来定,一般可认为是4个字节   

3、取值不同       

bool取值false和true,是0和1的区别       

BOOL取值FALSE和TRUE,是0和非0的区别   

bool是标准C++数据类型,可取值true和false。单独占一个字节,如果数个bool对象列在一起,可能会各占一个bit,这取决于编译器。   

BOOL是微软定义的typedef int BOOL。与bool不同,它是一个三值逻辑,TRUE/FALSE/ERROR,返回值为>0的整数为TRUE,0为FALSE,-1为ERROR。Win32 API中很多返回值为BOOL的函数都是三值逻辑,比如GetMessage()。

windows为了兼容问题定义的基础变量。   

typedef unsigned long       DWORD;   

typedef int                         BOOL;   

typedef unsigned char       BYTE;   

typedef unsigned short      WORD;   

typedef float                     FLOAT;   

typedef FLOAT                 *PFLOAT;   

typedef BOOL near           *PBOOL;   

typedef BOOL far             *LPBOOL;   

typedef BYTE near           *PBYTE;   

typedef BYTE far              *LPBYTE;   

typedef int near                *PINT;   

typedef int far                  *LPINT; //   maximum   heap   size

问题实例:

程序如下:
......
CFileFind finder;
bool bWorking =finder.FindFile("c://文件.txt");
......

编译提示:
warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning)

把bool改成大写的BOOL后就没有警告的提示了,为什么呢?不都是布尔变量吗?区别在哪呢?

解答:

BOOL型在windef.h头文件中被定义,其实际类型为int,换句话说,BOOL其实就是int型变量,与布尔型bool没有什么关系。
finder.FindFile函数实际上会返回一int型变量。
至于true和TRUE,同样的,true和false是都是布尔值,而TRUE是一个int值(其值为1),FALSE也是int值(其值为0)。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芋头大神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值