c/c++中BOOL和bool的区别
区别:
-
类型不同
bool为布尔型,bool是标准C++基本数据类型。单独占一个字节。
-
取值false和true。bool flag1=-100;//将被转换为true,非零正负值都转换为true。bool flag2 = 0; //将被转换为falseint val1= true;//将被转换为1int val2=false;//将被转换为0
-
任何非零值转换为true,零转换为false:
-
字面值true和false都可以通过提升转换为int类型,true被转换为1,而false被转换为0:
-
-
-
如果多个bool对象排列在一起,可能会各占一个bit,这取决于编译器。
-
C语言中没有bool类型。
BOOL为int型。
-
BOOL是微软在VC++中定义的“typedef int BOOL”。
-
目的是解决程序在C与C++中环境的差异。
-
-
本质是int类型。注意:
-
BOOL值可能即不等于FALSE,也不等于TRUE。例如:BOOL val = 2;
-
所以BOOL类型判断真假,只与FALSE比较。
-
-
与bool不同,它是一个三值逻辑。TRUE/FALSE/ERROR,
-
返回值为1为TRUE,0为FALSE,ERROR(ERROR具体值要看宏定义,通常为-1)。
-
Win32 API中很多返回值为BOOL的函数都是三值逻辑。比如GetMessage。
-
-
使用建议:
-
如果是写标准的C++,那么就全用bool;
-
如果是写vc++,就尽量使用BOOL,避免转换产生的性能警告。
-
gbf:写vc++也尽量使用bool,使用BOOL做真假判断容易出错。如果要用BOOL做返回值,则使用int或BYTE代替。