Delphi中的布尔类型

Delphi中定义了四种布尔类型:BooleanByteBoolWordBoolLongBool。后面三种布尔类型是为了与其他语言兼容而引入的,一般情况下建议使用Boolean类型。

这四种类型的布尔值占用内存的数量如下:

Boolean    1 Byte

ByteBool   1 Byte

WordBool  2 Bytes1 Word

LongBool   4 Bytes2 Words

对于ByteBoolWordBoolLongBool三种类型True常量的值为非零,False为零,可以用Ord函数验证;

而对于Boolean类型,True常量的值为1False为零。在期望Boolean值的上下文中,编译器会将ByteBoolWordBoolLongBool三种类型的非零值转换为True

然而,在Delphi中布尔表达式和Integer/Real是不兼容的。下面的表格对比了BooleanByteBool/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')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值