分类: C/C++
2010-08-27 10:29:33
注:本文仅针对符合C99标准的编译器,比如:gcc3.4.5。VC6等编译器不在本文讨论范围内。 我们知道在C++里有专门的bool类型,用来表示真或假。但是在C语言里没有这样的类型(至少我是一直这么认为的),表达式的值0为假,非0为真。所以条件判断语句( if(...)、while(...) )非常灵活,甚至一个指针类型都可以是条件表达式。 为了使程序更清晰,我们常常会给出如下的宏定义: typedef int BOOL; 这是最常见的写法,能被任何C语言编译器认可。 今天我在一段程序里看见这么一行 #include /* 这个头文件很短,而且也很明了,不过我对_Bool这个类型产生的兴趣。又一翻百度,发现这是C99标准引入的新的关键字。对,是关键字,而不是宏定义,也不是typedef。通过sizeof(_Bool);得知这个类型占1个字节,而且无论给这个类型的变量赋任何非0整数值,其值都是1,这也说明了他不是其他整数类型的别名。 好了,其实说白了,C语言不是没有布尔类型,只能说在C99标准之前没有。现在只要在源文件中包含stdbool.h这个头文件,就可以在C语言里像C++那样使用bool类型了。 |