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