bool表示布尔型变量,也就是逻辑型变量的定义符,以英国
数学家、
布尔代数的奠基人
乔治·布尔(George Boole)命名。bool类似于float,double等,只不过float定义
浮点型,double定义
双精度浮点型。 在objective-c中提供了相似的类型BOOL,它具有YES值和NO值;在java中则对应于boolean类型。
如果数个bool对象列在一起,可能会各占一个Byte,这取决于
编译器。
BOOL是
微软定义的typedef int BOOL(在windef.h中),0为FALSE,1为TRUE。(-1和2既不是TRUE也不是FALSE)。
bool可用于定义函数类型为布尔型,函数里可以有
return TRUE; return FALSE 之类的语句。
C99标准定义了一个新的关键字_Bool,提供了
布尔类型。以前,C程序员总是使用自己的方法定义布尔类型。0表示false,非0表示true。可能使用
char类型表示一个布尔类型,也可能使用int类型表示一个布尔类型。很多函数库都定义了自己的布尔类型和相应的宏,枚举,
typedef。C99把C语言原生的布尔类型带来了。C99中同时增添的关键字还有_Complex,_Imaginary等。
“An object declared as type_Boolis large enough to store the values 0
and1.”
也就是说,只规定了_Bool类型的大小是至少能够存放0和1这两个值。并没有规定具体的大小。这交给
编译器自由发挥了。
可以看到,gcc编译器对待_Bool类型有自己的转换处理。如果是0赋值给_Bool类型,那么就赋值0。如果是任意其他数据,那么会赋值为1。(只是不知道其他编译器是否如此处理,C2008
标准草案没有细说这个部分)