2 回答

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊
這是兩個(gè)風(fēng)馬牛不相及的變量類(lèi)型關(guān)鍵字,只是因?yàn)槠捶ㄏ嗤?,僅區(qū)別于大小寫(xiě),題目才把它們拼湊在了一起。它們區(qū)別大了:
類(lèi)型不同:bool是C++定義的布爾類(lèi)型,BOOL是微軟定義的int類(lèi)型(就是int的別名);
取值不同:bool的取值只有0(false)、1(true)兩個(gè),而B(niǎo)OOL的取值是int范圍;
長(zhǎng)度不同:bool是單字節(jié)(8位二進(jìn)制)類(lèi)型,BOOL與int長(zhǎng)度相同。
下面就2作進(jìn)一步說(shuō)明:有一種說(shuō)法認(rèn)為bool是兩值類(lèi)型——這沒(méi)錯(cuò),它的取值只有0和1,而B(niǎo)OOL是三值邏輯(取FALSE(0)、TRUE(>0)和ERROR(-1))——這錯(cuò)誤的,它的取值與int完全吻合,因?yàn)樗怯胻ypedef int BOOL;定義的int的別名。下面的代碼能驗(yàn)證以上表述:
//#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; //必須強(qiáng)制,因類(lèi)型不匹配 BOOL y=47819,z=-78; //無(wú)需強(qiáng)制,它就是int cout << "bool: x = " << x << endl; //輸出是1而非8,因bool型只取0和1 cout << "BOOL: y = " << y << " z = " << z << endl; //賦什么值就輸出什么 return 0; } |
BOOL類(lèi)型常常用作windows的API函數(shù)的返回值,這些函數(shù)大都返回TRUE(>0)/FALSE(0)/ERROR(-1),但這不是BOOL類(lèi)型就是三值邏輯的理由,就像strcmp函數(shù)返回int類(lèi)型的-1、0和1三個(gè)值,總不能說(shuō)int是三值邏輯吧!windows的API使用BOOL完全是體現(xiàn)一種代碼風(fēng)格和拉高閱讀性能。

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