用户名: 密码: 验证码: 验证码 注册 找回
今天是:2008年11月21日 星期五  您现在位于: 首页 → 技术文栏 → Delphi中的布尔类...
Delphi中的布尔类型
2008年04月18日  无双网  出处:CSDN
 

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



 (本文已被浏览 325 次)
 发布人:asp126
 → 推荐给我的好友
上篇文章:Delphi中实现汉字拼音声母查询
下篇文章:用DELPHI开发AUTHORWARE的u32
   文章评论
  → 评论内容 (点击查看)   共0条评论,每页显示5条评论   浏览所有评论
(没有相关评论)
  → 发表我的评论 (点击发表)
 网站留言· 友情链接·与我在线·网站收录查询关于我们·管理·TOP 
 陕ICP备05001883号 
Processed in 9 queries, Cache 41,Counter 584913,9 Online