FALSE/TRUE与false/true的区别
FALSE/TRUE与false/true的区别
 1.FALSE/TRUE与false/true的区别:
 false/true是标准C++语言里新增的关键字,而FALSE/TRUE是通过#define定义的INT数据,主要用途
 是解决程序在C与C++中环境的差异,以下是FALSE/TRUE在windef.h的定义:
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
  
 - 1
- 2
- 3
- 4
- 5
- 6
也就是说FALSE/TRUE是int类型,而false/true是bool类型;所以两者不一样的,只不过
 我们在使用中没有这种感觉,因为C++会帮你做隐式转换。
 2.bool与BOOL内存大小的区别:
 bool在C++里是占用1字节,而BOOL是int类型,int类型的大小是视具体环境而定的;所以
 来说:false/true只占用1个字节,而TRUE/FALSE视具体环境而言,以下是BOOL在windef
 .h中的定义:typedef int BOOL;
 3.NULL与0的区别:
 还是让我们看一下windef.h中NULL的定义:
 #ifndef NULL
 #ifdef __cplusplus//这个是指示是用C++来编译程序
 #define NULL 0
 #else
 #define NULL ((void *)0)
 #endif
 #endif
 所以说:它们没有区别,只不过在C里面会做一个强制类型转换。
 BOOL和bool的区别
 1、类型不同
 BOOL为int型;bool为布尔型。
 2、长度不同
 bool只有一个字节;BOOL长度视实际环境来定,一般可认为是4个字节。
 3、取值不同
 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()。
 4、例子
 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;
 ————————————————
 版权声明:本文为CSDN博主「机器视觉001」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
 原文链接:https://blog.csdn.net/liubing8609/article/details/70495482/
文章来源: blog.csdn.net,作者:IM-STONE,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/doubleintfloat/article/details/107179374
- 点赞
- 收藏
- 关注作者
 
             
           
评论(0)