zoukankan      html  css  js  c++  java
  • BOOL和bool的区别

    1、类型不同

      BOOL为int型,微软自定义类型:typedef int   BOOL;

      bool为布尔型,为C++标准的数据类型

    2、长度不同

      bool只有一个字节

      BOOL长度视实际环境来定,一般可认为是4个字节,因为它本身是int型

    3、取值不同

      bool取值false和true,是0和1的区别

      BOOL取值FALSE和TRUE,是0和非0的区别

      如果数个bool对象列在一起,可能会各占一个bit,这取决于编译器。

      BOOL是微软定义的typedef int BOOL(在windef.h中)。与bool不同,它是一个三值逻辑,

    TRUE/FALSE/ERROR,定义如下:(afx.h)

    #define FALSE 0

    #define TRUE 1

    #define ERROR 0

      Win32 API中很多返回值为BOOL的函数都是三值逻辑。比如GetMessage().

      例如:

    bool x=3;    //告警
    bool x=1;    //正确
    BOOL x=3;    //正确
    BOOL x=3.3;  //告警

      bool类型可以赋值给BOOL类型,但是BOOL类型赋值给bool类型会告警

    布尔型变量bool

      bool是布尔型变量,也就是逻辑型变量的定义符,类似于float,double等,只不过float定义浮点型,double定义双精度浮点型。

      布尔型变量的值只有真 (true) 和假(false)。

      布尔型变量可用于逻辑表达式,也就是“或”“与”“非”之类的逻辑运算和大于小于之类的关系运算,逻辑表达式运算结果为真或为假。

      bool可用于定义函数类型为布尔型,函数里可以有 return TRUE; return FALSE 之类的语句。

      布尔型运算结果常用于条件语句,假设布尔变量名字为flag,它与零值比较的标准if语句如下:

    if (flag) //表示flag为真

    if (!flag) //表示flag为假

      其它的用法都属于不良风格,例如:

    if (flag == TRUE)

    if (flag == 1 )

    if (flag == FALSE) 

    if (flag == 0)

      由以上可知 BOOL占4个字节,bool占1个字节。来以为计算机处理1个字节比处理4个字节快。其实不时这样的。由于现在的CPU都是32位的,所以CPU一次处理4个字节,那么处理1个字节需要额外的处理。所以效率就低。
    typedef  char  bool
    typedef  DWORD BOOL

  • 相关阅读:
    Is It A Tree?(并查集)(dfs也可以解决)
    【转】python中查询某个函数的使用方法
    python2和python3 print输出不换行
    Python在Windows下列出所有的安装包和模块
    构建打包发布模块及导入使用
    Python保存时提示“SyntaxError: Non-ASCII character 'xe8' in file”
    python基础学习(一)
    命令别名设定:alias,unalias 历史命令:history
    变量内容的删除、取代与替换(optional)
    变量键盘读取、数组与宣告:read,array,declare
  • 原文地址:https://www.cnblogs.com/forlove/p/2088705.html
Copyright © 2011-2022 走看看