大道至简 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