1.类型不同
BOOL为int 型;bool为布尔型。
2.长度不同
bool只有一个字节;BOOL长度根据实际环境确定,一般为4字节。
3.取值不同
bool取值false和true,是0和1的区别。给bool赋值时,除了false和true,可用任何整型的数据如int,char,double等,但bool型数据只会把0以及0.0识别为false,其他识别为true。
BOOL是微软为了兼容问题而定义的,包含在头文件 windows.h中,typedef int BOOL,是一个三值逻辑,TRUE/FALSE/ERROR,返回值大于0的整数为TRUE,等于0为FALSE,-1为ERROR。
#include<iostream>
#include<Windows.h>
using namespace std;
int main() {
bool a = -100;
bool b = 4;
bool c = 0;
cout << a << ends << b << ends << c <<endl;
BOOL A = -100;
BOOL B = 3;
BOOL C = 0;
cout << A << ends << B << ends << C <<endl;
return 0;
}
运行结果如下:
可以看出,bool的取值只有false和true,非零值被转为true,零被转为false。
BOOL是int型,可取所有int值,当值为0时,可认为时FALSE,当值为1时,可看作TRUE。这里可以看看FALSE/TRUE在windef.h的定义:
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
为什么需要BOOL?
BOOL是微软定义的typedef int BOOL,用途是解决程序在C与C++中环境的差异。
使用上的注意
- 如果是写标准的C++,那么就全用bool;
- 如果是写vc++,就尽量使用BOOL,避免转换产生的性能警告。