delphi中的布尔类型  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi中的布尔类型


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")

推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.069390058517456 seconds