Delphi中布尔类型辨析


======================================================
注:本文源代码点此下载
======================================================

delphi中预定义的布尔类型有四种:boolean ,bytebool,wordbool,longbool。其中,boolean类型是首选布尔类型,其余三种是为其它编程语言和windows 环境提供兼容性支持。这些布尔类型在使用上大同小异,但如果混淆使用将可能会有意外结果。

现做简单辨析供大家参考。

一、从资源占用的角度进行比较

一项boolean 类型的数据占用1字节的内存;

一项bytebool类型的数据占用 1字节的内存;

一项wordbool类型的数据占用 2字节的内存;

一项longbool类型的数据占用 4字节的内存。

如果开发者在进行程序设计时将构造一种含有布尔数据类型的结构类型,那么在资源占用方面将有所考虑。尽管这些数据类型之间是可以相互赋值的,但某些特殊情况下是有区别的。首先看下面的语句:

type

byteboolfile = file of bytebool;

longboolfile = file of longbool;

这里,如果在这两中类型文件中存储相同数量的布尔值,其文件大小是不同的。而对同一物理文件按照这两种类型文件分别读取数据,其结果更是相去甚远。

下面是比较bytebool和longbool的一段程序,得到的文件 test1.bin和 test2.bin的文件尺寸分别为4字节和16字节。

procedure comparebyteboolwithlongbool;

const

fname1 = 'c:\test1.bin';

fname2 = 'c:\test2.bin';

type

byteboolfile = file of bytebool;

longboolfile = file of longbool;

var

bf: byteboolfile;

lf: longboolfile;

b: boolean;

begin

b:= false;

assignfile(bf, fname1);

rewrite(bf);

write(bf, b, b, b, b);

closefile(bf);

assignfile(lf,fname2);

rewrite(lf);

write(lf, b, b, b, b);

closefile(lf);

end;

有兴趣的朋友可以在此基础上再比较一下读取数据的区别,你会有更奇特的发现。

二、从布尔值的操作角度进行比较

在delphi中,布尔值只能被赋予预定义的常量true和false之一。上述四种布尔数据类型有如下关系:

boolean bytebool,wordbool,longbool

false

true

ord(false) = 0ord(false) = 0

ord(true) = 1 ord(true)ord(lb) [b = lb = false]');

b := true;

lb := true;

if ord(b) = ord(lb) then

showmessage('ord(b) = ord(lb) [b= lb = true]')

else

showmessage('ord(b) 关注我收藏该文与我联系


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值