Delphi中的布尔类型

转载 2016年05月31日 11:00:54

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

相关文章推荐

向数组元素赋值并转换成布尔元素

一、目的 学会如何将数值数组转换成布尔数组 二、VI前面板 三、VI的程序框图 四、心得 此VI程序用一个for循环实现了用数值数组和布尔数组显示数值数组的功能,需注意的是,...

数组和整数之间的转换

今天在leetcode上面做到的第二个题是:  https://leetcode.com/problems/string-to-integer-atoi/ 是关于字符串转为整数的类型。 题目分析:...

delphi编程里的bool跟boolean类型有什么区别

bool是LongBool类型。 Delphi中定义了四种布尔类型:Boolean,ByteBool,WordBool和LongBool。后面三种布尔类型是为了与其他语言兼容而引入的,一般情况下建议使...
  • sforiz
  • sforiz
  • 2010年05月23日 20:34
  • 5340

Delphi中的几种布尔类型详解

Delphi中预定义的布尔类型有四种:Boolean ,ByteBool,WordBool,LongBool。其中,Boolean 类型是首选布尔类型,其余三种是为其它编程语言和Windows 环境提...

Delphi中布尔类型辨析

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

Swift教程:Swift基础,布尔类型

  • 2015年08月21日 11:10
  • 58.56MB
  • 下载

布尔类型的

  • 2012年11月07日 18:42
  • 317B
  • 下载

《GOF设计模式》—解释器 (INTERPRETER)—Delphi源码示例:对布尔表达式进行操作和求值

示例:对布尔表达式进行操作和求值 说明: (1)、文法      在这个语言中终结符是布尔变量,即常量true和false。"非终结符表示"包含运算符and,or和not的...

C语言的布尔类型(_Bool)

Technorati 标签: C,布尔,boolean,_Bool,stdbool.h          也许很多人都和我一样,从C99标准开始,不知道C语言已经有了布尔型,类型名字为“_Bool”...

未经处理的异常在 System.Data.dll 中发生。其他信息:在应使用条件的上下文(在 '***' 附近)中指定了非布尔类型的表达式。

【画龙点睛】 在where后面,如果仅仅是一个Boolean类型的值或者Boolean类型的变量,那么where和这个Boolean值之间是不可以有空格的(这时,我的代码中的@strCo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Delphi中的布尔类型
举报原因:
原因补充:

(最多只允许输入30个字)