WEB开发网
开发学院软件开发Delphi Delphi中的布尔类型 阅读

Delphi中的布尔类型

 2006-02-04 13:59:14 来源:WEB开发网   
核心提示: Delphi中定义了四种布尔类型:Boolean,ByteBool,Delphi中的布尔类型,WordBool和LongBool,后面三种布尔类型是为了与其他语言兼容而引入的,下面的表格对比了Boolean与ByteBool/WordBool/LongBool在异同: Boolean False < True
 

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

Tags:Delphi 布尔 类型

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接