浅谈C中的bool类型

一直知道的是C++中除了C语言中常见的类型外还有一个叫做bool类型的,用来表示逻辑值的成立(!0)或不成立(0)。很长时间里,我也一直认为bool类型是C++所独创的。

王铜在写6个嫌疑犯的程序时用到了bool类型数组,因他是使用Visual Studio 2015作为首选编译器,而我在Xcode中建立的C项目来检验这段程序,自然Error不可避免。当我和他提及时,他竟说这是C99标准新加入的,些许疑惑,Google查询了一下,看来真的是我孤陋寡闻了。

C语言不是没有布尔类型,只能说在C99标准之前没有。现在只要在源文件中包含stdbool.h这个头文件,就可以在C语言里像C++那样使用bool类型了。

我们不妨看一下stdbool.h这个头文件:

/*
* ISO C Standard: 7.16 Boolean type and values
*/
#ifndef _STDBOOL_H
#define _STDBOOL_H
#ifndef __cplusplus
#define bool _Bool
#define true 1
#define false 0
#else /* __cplusplus */
/* Supporting in C++ is a GCC extension. */
#define _Bool bool
#define bool bool
#define false false
#define true true
#endif /* __cplusplus */
/* Signal that all the definitions are present. */
#define __bool_true_false_are_defined 1
#endif /* stdbool.h */

从头文件中,我们不难发现,stdbool.h非常短,其意也只是引入bool类型,使之和C++兼容。

分享