程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 2015-07-09,2015年07月09日

2015-07-09,2015年07月09日

編輯:C++入門知識

2015-07-09,2015年07月09日


 警告:warning C4800: “BOOL”: 將值強制為布爾值“true”或“false”(性能警告)

BOOL與bool的區別

在C++編程中遇到了如題的一個警告,原來BOOL與bool是不一樣的,有人整理了下,轉載過來

一、 
1、類型不同 
BOOL為int型 
bool為布爾型 
2、長度不同 
bool只有一個字節 
BOOL長度視實際環境來定,一般可認為是4個字節 
3、取值不同 
bool取值false和true,是0和非0的區別  
BOOL取值FALSE和TRUE,是0和1的區別
二: 
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;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved