天天看點

c++中TRUE與true的差別,BOOL與bool的差別

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++會幫你做隐式轉換。

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().

三:

大BOOL和小bool之間的差別:

1、類型不同

BOOL為int型

bool為布爾型

2、長度不同

bool隻有一個位元組

BOOL長度視實際環境來定,一般可認為是4個位元組

3、取值不同

bool取值false和true,是0和1的差別

BOOL取值FALSE和TRUE,是0和非0的差別

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;

繼續閱讀