时间: 2021-07-31 作者:daque
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')