zoukankan      html  css  js  c++  java
  • Delphi中定义了四种布尔类型:Boolean,ByteBool,WordBool和LongBool。后面三种布尔类型是为了与其他语言兼容而引入的

     

    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/zisongjia/article/details/72963204

  • 相关阅读:
    Odoo many2many command
    odoo-cn 邮件列表
    教育 管理系统
    ddmrp
    odoo12新特性: 会计改进
    odoo分析会计
    Odoo 8,9,10 制造领料、入库 实践
    Odoo 后端数据库postgreSQL事务级别
    Hive建表与导入文件中的数据
    Hadoop编写一键集群全起start-cluster.sh、全关stop-cluster.sh、显示所有jps进程show-jps.sh脚本 以及群起zookeeper服务,jps不显示的解决方案
  • 原文地址:https://www.cnblogs.com/findumars/p/7062191.html
Copyright © 2011-2022 走看看