每日一问7:bool和BOOL的区别

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,避免转换产生的性能警告。
原文地址:https://www.cnblogs.com/honernan/p/14082590.html