首页 > 代码库 > [整理]标准C中的"布尔"类型
[整理]标准C中的"布尔"类型
C语言提供的基本数据类型:char , int ,float, double。
为什么没有其他语言中常见bool布尔数据类型呢?
1.在标准C语言(ANSI C)中并没有bool数据类型
标准C中,表达式的值0为假,非0为真。一般,为了提高代码可阅读性,自定义3个int类型的宏:
#include <stdio.h> #define bool int #define false 0 #define true 1 int main(){ bool result = true;//true的值实际是int类型的1 }
当然,使用char类型来定义宏也是可以的。
2.C语言不是没有布尔类型, 而是在C99标准之前没有
现在,在C99中,通过在源文件中包含stdbool.h这个头文件,就可以在C语言里使用_Bool类型了,这是C99标准新增的头文件,引入_Bool数据类型,和C++兼容。
1 #define bool _Bool 2 #define true 1 3 #define false 0
注意:VS2010的编译器只支持ANSI C,不支持C99。
3.我们必须知道的:
(1).一般提到标准C,指的是“ANSI C”,有时称为"C89"。
(2).ANSI C和ISO C的历史
C 的第一个标准是由ANSI发布的。虽然这份文档后来被国际标准化组织(ISO)采纳并且ISO发布的修订版也被ANSI采纳了,但名称ANSI C(而不是 ISO C)仍被广泛使用。一些软件开发者使用ISO C,还有一些使用 Standard C。
C89
1983年,美国国家标准协会组成了一个委员会,X3J11,为了创立 C 的一套标准。经过漫长而艰苦的过程,该标准于1989年完成,并在作为ANSI X3.159-1989"Programming Language C"正式生效。这个版本的语言经常被称作"ANSI C",或有时称为"C89"(为了区别C99)。
C90
在1990年,ANSI C标准(带有一些小改动)被美国国家标准协会采纳为ISO/IEC 9899:1990。这个版本有时候称为C90。因此,C89和C90通常指同一种语言。
C99
主条目:C99
在2000年三月,ANSI 采纳了 ISO/IEC 9899:1999 标准。这个标准通常指C99。
C11
主条目:C11
在2011年12月,ANSI 采纳了 ISO/IEC 9899:2011 标准。这个标准通常即C11,它是C程序语言的现行标准
参考:
1.ANSI C
2.C99