在将BOOL类型转换为bool类型时一定要小心。因为BOOL实际上就是int的,而bool就是基本的bool类型,在从BOOL转换为bool时,因为前面范围广,将会出现丢失的肯能。
typedef int BOOL;
其取值为TRUE(1)或FALSE(0)
而bool是基本类型,其取值为false或true。
如果不进行转换,会出现如下警告:
warning C4800: ‘BOOL’ : forcing value to bool ‘true’ or ‘false’ (performance warning)
如果采用如下方式:
bool bRet=(bool)isBOOL();
进行转换,一样会出现如下警告:
warning C4800: ‘BOOL’ : forcing value to bool ‘true’ or ‘false’ (performance warning)
正确的做法是:
bool bRet=(isBOOL()!=0);