2018-01-16 创建人:Ruo_Xiao
开发环境:VS2010
一、源代码
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
bool isOK1 = true;
_Bool isOK2 = false;
BOOL isOK3 = TRUE;
cout<<"sizeof(bool) = "<<sizeof(bool)<<endl;
cout<<"isOK1 = "<<isOK1<<endl;
cout<<endl;
cout<<"sizeof(_Bool) = "<<sizeof(_Bool)<<endl;
cout<<"isOK2 = "<<isOK2<<endl;
cout<<endl;
cout<<"sizeof(BOOL) = "<<sizeof(BOOL)<<endl;
cout<<"isOK3 = "<<isOK3<<endl;
cout<<endl;
cin.get();
return 0;
}
结果:
typedef int BOOL;
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
二、总结
由以上信息可知:
- bool和_Bool都占1个字节,标准赋值为“true”和“false”,但是二者在机器中被表示成了“1”和“0”。
- BOOL、TRUE和FALSE,定义于WinDef.h头文件中。实际上BOOL为int型,占4个字节,标准赋值:TRUE和FALSE。TRUE和FALSE在预处理阶段都会分别被1和0替换。
- 额外:
(1)bool:C++中关键字,布尔类型。
(2)_Bool:C99中的关键字,布尔类型。(K&R C、ANSI C、C95都没有自己的布尔类型)
(3)BOOL:是微软定义的布尔类型。。