課程
/后端開(kāi)發(fā)
/C++
/C++遠(yuǎn)征之起航篇
C語(yǔ)言中不是也可以用if(flag)么?????jī)烧哂猩秴^(qū)別,再者C++中的flag不是說(shuō)只有false和true嗎,怎么來(lái)了個(gè)flag=1???
2015-11-02
源自:C++遠(yuǎn)征之起航篇 4-1
正在回答
0是false 非0即為true 這是我的理解 ? 后面是我看別人的博客 它們的區(qū)別:
c/c++ bool和BOOL的區(qū)別
1、類(lèi)型不同
bool為布爾型
BOOL為int型
2、長(zhǎng)度不同
bool只有一個(gè)字節(jié)
BOOL長(zhǎng)度視實(shí)際環(huán)境來(lái)定,一般可認(rèn)為是int類(lèi)型的大小4個(gè)字節(jié)
3、取值不同
bool取值false和true,是0和1的區(qū)別
BOOL取值FALSE和TRUE,是0和非0的區(qū)別
4、
bool是標(biāo)準(zhǔn)C/C++數(shù)據(jù)類(lèi)型,可取值true和false。單獨(dú)占一個(gè)字節(jié),如果數(shù)個(gè)bool對(duì)象列在一起,可能會(huì)各占一個(gè)bit,這取決于編譯器。
BOOL是微軟定義的,用途是解決程序在C與C++中環(huán)境的差異,以下是FALSE/TRUE在windef.h的定義:
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif 。與bool不同,它是一個(gè)三值邏輯,TRUE/FALSE/ERROR,返回值為>0的整數(shù)為T(mén)RUE,0為FALSE,-1為ERROR。Win32 API中很多返回值為BOOL的函數(shù)都是三值邏輯。比如GetMessage。
所以兩者不一樣的,只不過(guò)我們?cè)谑褂弥袥](méi)有這種感覺(jué),因?yàn)镃++會(huì)幫你做隱式轉(zhuǎn)換。
5、例子
bool x=3; //告警
bool x=1; //正確
BOOL x=3; //正確
BOOL x=3.3; //告警
也就是說(shuō)bool a=1;if(a){}等價(jià)于bool a=1;if(1){}等價(jià)于bool a=1;if(true){}
舉報(bào)
C++亮點(diǎn)盡在其中,本課程是在C語(yǔ)言基礎(chǔ)上的一個(gè)延伸,得以升華
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2015-11-02
0是false 非0即為true 這是我的理解 ? 后面是我看別人的博客 它們的區(qū)別:
c/c++ bool和BOOL的區(qū)別
1、類(lèi)型不同
bool為布爾型
BOOL為int型
2、長(zhǎng)度不同
bool只有一個(gè)字節(jié)
BOOL長(zhǎng)度視實(shí)際環(huán)境來(lái)定,一般可認(rèn)為是int類(lèi)型的大小4個(gè)字節(jié)
3、取值不同
bool取值false和true,是0和1的區(qū)別
BOOL取值FALSE和TRUE,是0和非0的區(qū)別
4、
bool是標(biāo)準(zhǔn)C/C++數(shù)據(jù)類(lèi)型,可取值true和false。單獨(dú)占一個(gè)字節(jié),如果數(shù)個(gè)bool對(duì)象列在一起,可能會(huì)各占一個(gè)bit,這取決于編譯器。
BOOL是微軟定義的,用途是解決程序在C與C++中環(huán)境的差異,以下是FALSE/TRUE在windef.h的定義:
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif 。與bool不同,它是一個(gè)三值邏輯,TRUE/FALSE/ERROR,返回值為>0的整數(shù)為T(mén)RUE,0為FALSE,-1為ERROR。Win32 API中很多返回值為BOOL的函數(shù)都是三值邏輯。比如GetMessage。
所以兩者不一樣的,只不過(guò)我們?cè)谑褂弥袥](méi)有這種感覺(jué),因?yàn)镃++會(huì)幫你做隱式轉(zhuǎn)換。
5、例子
bool x=3; //告警
bool x=1; //正確
BOOL x=3; //正確
BOOL x=3.3; //告警
2015-11-04
也就是說(shuō)bool a=1;if(a){}等價(jià)于bool a=1;if(1){}等價(jià)于bool a=1;if(true){}