查看完整版本: 关于bool和BOOL一些问题的搜集

大道至简 2008-7-21 12:56

关于bool和BOOL一些问题的搜集

理论上是不一样的,但你不必去刻意区别他们。   
   
  TRUE,FALSE是C语言里的东西。C语言语法规则里有bool型数据类型,但设计C编译器时没有设计bool型这个数据类型,因此它定义了两个宏来表示bool型数据TRUE被定义为1,FALSE被定义为0。请记住TRUE,FALSE是宏,他们被定义在stdlib.h头文件中。因此,如果你的程序没有包含stdlib.h,编译器是不认识TRUE,FALSE的。同时,C编译器永远也不认识true,false。   
   
  到了C++,他的编译器设计了bool型数据,也就是true,false。因此true,false是C++中的关键字,不用包含任何头文件,C++编译器都会认识。同时C++对C是兼容的,因此只要你包含了stdlib.h头文件,TRUE,FALSE也是被C++认可的。   
   
  建议:在C++中坚持使用true,false!!


TRUE,FALSE在不同的系统下占用的内存是不同的。   
  true,flse是一个byte.在不同的系统下是相同的。



不一样   
  BOOL   b   =   3;   (BOOK   <=>   UINT)   
  b可以!=TRUE,也可以!=FALSE   
    如果你用if(b)的话可以说是一样的   
  如果用if(b==TRUE)或if(b==FALSE)的话,那么是不一样的

大道至简 2008-7-21 12:56

1.FALSE/TRUE与false/true的区别:   
   
    false/true是标准C++语言里新增的关键字,而FALSE/TRUE是通过#define,这要用途是解决程序在C与C++中环境的差异,以下是FALSE/TRUE在windef.h的定义:   
   
  #ifndef   FALSE   
  #define   FALSE   0   
  #endif   
   
  #ifndef   TRUE   
  #define   TRUE   1   
  #endif   
   
   
  也就是说FALSE/TRUE是int类型,而false/true是bool类型;所以两者不一样的,只不过我们在使用中没有这种感觉,因为C++会帮你做隐式转换。   
   
  2.bool的大小与BOOL的区别:   
   
  bool在C++里是占用1字节,而BOOL是int类型,int类型的大小是视具体环境而定的;所以来说:false/true只占用1个字节,而TRUE/FALSE视具体环境而言,以下是BOOL在windef.h中的定义:typedef   int   BOOL;   
   

  bool   b;   
  b!=true那么b=false
页: [1]
查看完整版本: 关于bool和BOOL一些问题的搜集