概述
1、类型不同
BOOL为int型,微软自定义类型:typedef int BOOL;
bool为布尔型,为C++标准的数据类型
2、长度不同
bool只有一个字节
BOOL长度视实际环境来定,一般可认为是4个字节,因为它本身是int型
3、取值不同
bool取值false和true,是0和1的区别
BOOL取值FALSE和TRUE,是0和非0的区别
如果数个bool对象列在一起,可能会各占一个bit,这取决于编译器。
BOOL是微软定义的typedef int BOOL(在windef.h中)。与bool不同,它是一个三值逻辑,
TRUE/FALSE/ERROR,定义如下:(afx.h)
#defineFALSE 0
#defineTRUE 1
#defineERROR 0
Win32API中很多返回值为BOOL的函数都是三值逻辑。比如GetMessage().
例如:
boolx=3; //告警
bool x=1; //正确
BOOL x=3; //正确
BOOL x=3.3; //告警
bool类型可以赋值给BOOL类型,但是BOOL类型赋值给bool类型会告警
布尔型变量bool
bool是布尔型变量,也就是逻辑型变量的定义符,类似于float,double等,只不过float定义浮点型,double定义双精度浮点型。
布尔型变量的值只有真 (true) 和假(false)。
布尔型变量可用于逻辑表达式,也就是“或”“与”“非”之类的逻辑运算和大于小于之类的关系运算,逻辑表达式运算结果为真或为假。
bool可用于定义函数类型为布尔型,函数里可以有 return TRUE;return FALSE 之类的语句。
布尔型运算结果常用于条件语句,假设布尔变量名字为flag,它与零值比较的标准if语句如下:
if(flag) //表示flag为真
if(!flag) //表示flag为假
其它的用法都属于不良风格,例如:
if(flag == TRUE)
if(flag == 1 )
if(flag == FALSE)
if(flag == 0)
由以上可知 BOOL占4个字节,bool占1个字节。来以为计算机处理1个字节比处理4个字节快。其实不时这样的。由于现在的CPU都是32位的,所以CPU一次处理4个字节,那么处理1个字节需要额外的处理。所以效率就低。
typedef char bool
typedef DWORD BOOL
最后
以上就是朴素蓝天为你收集整理的BOOL和bool的区别的全部内容,希望文章能够帮你解决BOOL和bool的区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复