Delphi中定義了四種布爾類型:Boolean,ByteBool,WordBool和LongBool。后面三種布爾類型是為了與其他語言兼容而引入的


 

bool是LongBool類型。

 

Delphi中定義了四種布爾類型:Boolean,ByteBool,WordBool和LongBool。后面三種布爾類型是為了與其他語言兼容而引入的,一般情況下建議使用Boolean類型。

這四種類型的布爾值占用內存的數量如下:

Boolean 1 Byte

ByteBool 1 Byte

WordBool 2 Bytes(1 Word)

LongBool 4 Bytes(2 Words)

對於ByteBool,WordBool和LongBool三種類型True常量的值為非零,False為零,可以用Ord函數驗證;

而對於Boolean類型,True常量的值為1,False為零。在期望Boolean值的上下文中,編譯器會將ByteBool,WordBool和LongBool三種類型的非零值轉換為True。

然而,在Delphi中布爾表達式和Integer/Real是不兼容的。下面的表格對比了Boolean與ByteBool/WordBool/LongBool在異同:

 

Boolean

 

 False < True

Ord(False) = 0

Ord(True) = 1

Succ(False) = True

Pred(True) = False

BoolToStr(True) = -1 //這個函數很變態

BoolToStr(False) = 0

 

ByteBool, WordBool, LongBool

False <> True

Ord(False) = 0

Ord(True) <> 0

Succ(False) = True

Pred(False) = True

 

BoolToStr這個函數最莫名其妙了,明明說True的值是1,而它卻告訴我們True是-1。函數的原形是:

function BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string;

下面這個表是函數的轉換規則:

B UseBoolStrs Value of returned string

True False '-1'

True True TrueBoolStrs數組的第一個值(default, 'TRUE')

False False '0'

False True FalseBoolStrs數組的第一個值(default, 'FALSE')

 

http://blog.csdn.net/zisongjia/article/details/72963204

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM