BOOL与bool TRUE与true FALSE与false 区别

FALSE/TRUE与false/true的区别

  1. FALSE/TRUE与false/true的区别:

  false/true是标准C++语言里新增的关键字,而FALSE/TRUE是通过#define,这要用途是解决程序在C与C++中环境的差异,以下是FALSE/TRUE在windef.h的定义:

#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif

  也就是说FALSE/TRUE是int类型,而false/true是bool类型;所以两者不一样的,只不过我们在使用中没有这种感觉,因为C++会帮你做隐式转换。

  1. bool的大小与BOOL的区别:

  bool在C++里是占用1字节,而BOOL是int类型,int类型的大小是视具体环境而定的;所以来说:false/true只占用1个字节,而TRUE/FALSE视具体环境而言,以下是BOOL在windef.h中的定义:

typedef int BOOL;
  1. NULL与0的区别:

  还是让我们看一下windef.h中NULL的定义:

#ifndef NULL
#ifdef __cplusplus//这个是指示是用C++来编译程序
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif

  所以说:它们没有区别,只不过在C里面会做一个强制类型转换。

BOOL和bool的区别

一:

  • 类型不同: BOOL为int型,bool为布尔型。
  • 长度不同:bool只有一个字节。BOOL长度视实际环境来定,一般可认为是4个字节。
  • 取值不同:bool取值false和true,是0和1的区别;BOOL取值FALSE和TRUE,是0和非0的区别。

二:

  • bool是标准C++数据类型,可取值true和false。单独占一个字节,如果数个bool对象列在一起,可能会各占一个bit,这取决于编译器。
  • BOOL是微软定义的typedef int BOOL。与bool不同,它是一个三值逻辑,TRUE/FALSE/ERROR,返回值为>0的整数为TRUE,0为FALSE,-1为ERROR。Win32 API中很多返回值为BOOL的函数都是三值逻辑。比如GetMessage()。

例:

bool x=3;  //告警
bool x=1;  //正确
BOOL x=3;  //正确
BOOL x=3.3;  //告警

注:windows为了兼容问题定义的基础变量。

typedef unsigned long        DWORD;
typedef int                  BOOL;
typedef unsigned char        BYTE;
typedef unsigned short      WORD;
typedef float                FLOAT;
typedef FLOAT                *PFLOAT;
typedef BOOL near            *PBOOL;
typedef BOOL far            *LPBOOL;
typedef BYTE near            *PBYTE;
typedef BYTE far            *LPBYTE;
typedef int near            *PINT;
typedef int far              *LPINT;

转载自:https://www.cnblogs.com/shikamaru/p/5809368.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值