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


    bool是LongBool类型。

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

    参考:http://blog.csdn.net/sforiz/article/details/5618551

  • 相关阅读:
    打sql server pack4后打开网站报错的解决办法
    北京大学的三角形文章
    一次SQL Server 2000修复实践的说明
    今天重看了几集《将爱情进行到底》
    MakeFile的写法
    [经验杂谈]与大虾对话:领悟设计模式zz
    论函数调用约定(zz)
    用标准模板库STL实现文件比较(zz)
    C++中的虚函数(virtual function)
    为学院科研办做的个小应用管理程序
  • 原文地址:https://www.cnblogs.com/findumars/p/4769601.html
Copyright © 2020-2023  润新知