c/c++中BOOL和bool的区别

c/c++中BOOL和bool的区别

区别:
 
  • 类型不同
bool为布尔型,bool是标准C++基本数据类型。单独占一个字节。
  1. 取值false和true。
    bool flag1=-100;//将被转换为true,非零正负值都转换为true。
    bool flag2 = 0; //将被转换为false
    int val1= true;//将被转换为1
    int val2=false;//将被转换为0
    1. 任何非零值转换为true,零转换为false:
    2. 字面值true和false都可以通过提升转换为int类型,true被转换为1,而false被转换为0:
    3.  
  2. 如果多个bool对象排列在一起,可能会各占一个bit,这取决于编译器。
  3. C语言中没有bool类型。
        
BOOL为int型。
  1. BOOL是微软在VC++中定义的“typedef int BOOL”。
    1. 目的是解决程序在C与C++中环境的差异。
  2. 本质是int类型。注意:
    1. BOOL值可能即不等于FALSE,也不等于TRUE。例如:BOOL val = 2;
    2. 所以BOOL类型判断真假,只与FALSE比较。
  3. 与bool不同,它是一个三值逻辑。TRUE/FALSE/ERROR,
    1. 返回值为1为TRUE,0为FALSE,ERROR(ERROR具体值要看宏定义,通常为-1)。
    2. Win32 API中很多返回值为BOOL的函数都是三值逻辑。比如GetMessage。
 
  • 使用建议:
  1. 如果是写标准的C++,那么就全用bool;
  2. 如果是写vc++,就尽量使用BOOL,避免转换产生的性能警告。
  3. gbf:写vc++也尽量使用bool,使用BOOL做真假判断容易出错。如果要用BOOL做返回值,则使用int或BYTE代替
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值