2 回答

TA貢獻1816條經(jīng)驗 獲得超6個贊
這是兩個風馬牛不相及的變量類型關鍵字,只是因為拼法相同,僅區(qū)別于大小寫,題目才把它們拼湊在了一起。它們區(qū)別大了:
類型不同:bool是C++定義的布爾類型,BOOL是微軟定義的int類型(就是int的別名);
取值不同:bool的取值只有0(false)、1(true)兩個,而BOOL的取值是int范圍;
長度不同:bool是單字節(jié)(8位二進制)類型,BOOL與int長度相同。
下面就2作進一步說明:有一種說法認為bool是兩值類型——這沒錯,它的取值只有0和1,而BOOL是三值邏輯(取FALSE(0)、TRUE(>0)和ERROR(-1))——這錯誤的,它的取值與int完全吻合,因為它是用typedef int BOOL;定義的int的別名。下面的代碼能驗證以上表述:
//#include "stdafx.h"//If the vc++6.0, with this line. #include <iostream> #include "windows.h" using namespace std; int main( void ){ bool x=( bool )8; //必須強制,因類型不匹配 BOOL y=47819,z=-78; //無需強制,它就是int cout << "bool: x = " << x << endl; //輸出是1而非8,因bool型只取0和1 cout << "BOOL: y = " << y << " z = " << z << endl; //賦什么值就輸出什么 return 0; } |
BOOL類型常常用作windows的API函數(shù)的返回值,這些函數(shù)大都返回TRUE(>0)/FALSE(0)/ERROR(-1),但這不是BOOL類型就是三值邏輯的理由,就像strcmp函數(shù)返回int類型的-1、0和1三個值,總不能說int是三值邏輯吧!windows的API使用BOOL完全是體現(xiàn)一種代碼風格和拉高閱讀性能。

TA貢獻1155條經(jīng)驗 獲得超0個贊
c++ 定義 bool ,其值 為 false 或 true。實際上也是整型。
windows.h 定義 了 BOOL 型變量類型。其值 為 TRUE, FALSE. 實際上也是整型
實質上一樣,一套是小寫,另一套是大寫。
取值 0 為假,非0 (1,2,3,4, -1,-2,。。。)都為 真。
---------------------------------------
C 程序:
#define __BOOL_DEFINED
#include <stdio.h>
#include <windows.h>
bool 和 BOOL 就全都支持了
添加回答
舉報