MFC中BOOL和bool的区别大不大

这个问题,一般都不是问题。 不过细想,还是大有洞天的!


什么是BOOL?mfc中是“typedef int   BOOL;”


两者区别在哪里?

首先BOOL的性能更好。用bool来和一个int比较时,会有cast,而BOOL不会有,因为BOOL本身就是一个int。汇编代码上的区别可以参考http://www.codercorner.com/Bools.htm的片段。

但是BOOL会有隐含的bug产生。比如下面

----------------------------------------------------

BOOL l_flag = 2;

// a bunch of code here

if( l_flag == true)  // x!

{

}

----------------------------------------------------

BOOL类型的值是0或者non-zero,而bool类型的true或者false是1或者0。然后问题来了,non-zero是不能保证一定等于1的,他可以为任何值。


怎么办?

对于这种条件表达式,都使用implict compare。比如

----------------------------------------------------

BOOL l_flag = 2;

bool l_mark;

// a bunch of code here

if( l_flag)

{

}

if(l_mark)

{

}

----------------------------------------------------


本文参考了http://www.codercorner.com/Bools.htm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值