zoukankan      html  css  js  c++  java
  • 每日一问7:bool和BOOL的区别

    1.类型不同

    BOOL为int 型;bool为布尔型。

    2.长度不同

    bool只有一个字节;BOOL长度根据实际环境确定,一般为4字节。

    3.取值不同

    bool取值false和true,是0和1的区别。给bool赋值时,除了false和true,可用任何整型的数据如int,char,double等,但bool型数据只会把0以及0.0识别为false,其他识别为true。

    BOOL是微软为了兼容问题而定义的,包含在头文件 windows.h中,typedef int BOOL,是一个三值逻辑,TRUE/FALSE/ERROR,返回值大于0的整数为TRUE,等于0为FALSE,-1为ERROR。

    #include<iostream>
    #include<Windows.h>
    
    using namespace std;
    int main() {
    	
    	bool a = -100;
    	bool b = 4;
    	bool c = 0;
    	cout << a << ends << b << ends << c <<endl; 
    	BOOL A = -100;
    	BOOL B = 3;
    	BOOL C = 0;
    	cout << A << ends << B << ends << C <<endl;
    	return 0;
    }
    

    运行结果如下:

    可以看出,bool的取值只有false和true,非零值被转为true,零被转为false。
    BOOL是int型,可取所有int值,当值为0时,可认为时FALSE,当值为1时,可看作TRUE。这里可以看看FALSE/TRUE在windef.h的定义:

    #ifndef FALSE
    
    #define FALSE 0
    
    #endif
    
    #ifndef TRUE
    
    #define TRUE 1
    
    #endif
    

    为什么需要BOOL?

    BOOL是微软定义的typedef int BOOL,用途是解决程序在C与C++中环境的差异。

    使用上的注意

    • 如果是写标准的C++,那么就全用bool;
    • 如果是写vc++,就尽量使用BOOL,避免转换产生的性能警告。
  • 相关阅读:
    C# TransactionScope 使用
    .Net 4.5 的async 和await 的简单理解使用
    图片的等比缩放
    IIS 8 下使用 WCF
    SQL Server 中字符串中包含字符串变量的表示方法
    jsTree 的简单用法--异步加载和刷新数据
    webService 部署以后参数输入框不能显示
    js 节点属性
    js 数组排序
    js 时间格式化 -- 时间加减实现
  • 原文地址:https://www.cnblogs.com/honernan/p/14082590.html
Copyright © 2011-2022 走看看