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;
|