可以詳細介紹一下嗎?
uj5u.com熱心網友回復:
列舉定義的,FALSE=0,TRUE=1;enum是一個關鍵字,類似struct,union
uj5u.com熱心網友回復:
在布爾形式c語言中到底起什么作用?
uj5u.com熱心網友回復:
它就是一種整型值,真或假;
uj5u.com熱心網友回復:
在C99之前,嚴格來說,C語言是沒有布爾型別的。但是這并不妨礙C語言的作業,以及它和其它語言的介面,畢竟在編程語言里的慣例是0為假,非0為真。問題在于,很多人覺得這是一個和語言完備性有關的瑕疵和缺陷,就好比別人家里煮奶有專用的奶鍋,你家里炒菜和煮奶都用同一個鐵鍋。在WG14,很多委員都具有C++的背景,這些搗子特別喜歡往C標準里添加C++的玩意兒,但多數不會被標準委員會采納,因為里面很多都是私貨。也就是廠商的代表都希望把自己公司的擴展特性加入到標準里。
也許是起哄的人太多,WG14最終妥協了,決定把布爾型別加入到C語言的下一個標準C99里。理想情況下,這需要引入一個關鍵字boolean,或者至少是一個好記的bool。但是,在此之前,有很多完美主義的程式員為了圖方便,滿足自己的語言潔癖,已經在程式中定義了自己的“bool”,而且這樣的程式肯定有成千上萬。為了能夠正常編譯這些已有的程式,C99決定引入一個帶有下劃線的關鍵字_Bool,這樣就很難有沖突了。
關鍵字_Bool被用作型別指定符,用來宣告變數,或者函式的引數和回傳型別。這種型別的變數具有以下特點:
1,它是一種無符號整數型別;
2,至少可以保存0和1兩個值;
3,將任何標量值轉換為_Bool型別時,零值轉換為零,非零值轉換為1;
C語言規定,除了位域(bit-fields),任何物件(變數)都是由一個或多個連續的位元組組成。因此,_Bool型別的長度至少是一個位元組。
為了方便,在C語言的標準庫部分增加了一個頭<stdbool.h>。這個頭非常簡單,就定義了幾個宏:
# define bool _Bool
# define true 1
# define false 0
# define __bool_true_false_are_defined 1
最后一個宏__bool_true_false_are_defined是個標記,用于表明前面的三個宏已經定義,可以使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/281464.html
標籤:C語言
下一篇:QT生成軟體輸入法不能用
