c语⾔中的布尔类型头⽂件,C语⾔的布尔类型(_Bool)
C语⾔的布尔类型(_Bool)
也许很多⼈都和我⼀样,不知道现在的C语⾔已经有了布尔型:从C99标准开始,类型名字为“_Bool”。
在此之前的C语⾔中,使⽤整型int来表⽰真假。在输⼊时:使⽤⾮零值表⽰真;零值表⽰假。在输出时:真的结果是1,假的结果是0;(这⾥我所说的“输⼊”,意思是:当在⼀个需要布尔值的地⽅,也就是其它类型转化为布尔类型时,⽐如 if 条件判断中的的条件;“输
出”的意思是:程序的逻辑表达式返回的结果,也就是布尔类型转化为其他类型时,⽐如 a==b的返回结果,只有0和1两种可能)。
所以,现在只要你的编译器⽀持C99(我使⽤的是Dev C++4.9.9.2),你就可以直接使⽤布尔型了。另外,C99为了让C和C++兼容,增加了⼀个头⽂件stdbool.h。⾥⾯定义了bool、true、false,让我们可以像C++⼀样的定义布尔类型。
1. 我们⾃⼰定义的“仿布尔型”
在C99标准被⽀持之前,我们常常⾃⼰模仿定义布尔型,⽅式有很多种,常见的有下⾯两种:
/* 第⼀种⽅法 */ #define TRUE 1 #define FALSE 0 /* 第⼆种⽅法 */ enum bool{false, true};
2. 使⽤_Bool
现在,我们可以简单的使⽤ _Bool 来定义布尔型变量。_Bool类型长度为1,只能取值范围为0或1。将任意⾮零值赋值给_Bool类型,都会先转换为1,表⽰真。将零值赋值给_Bool类型,结果为0,表⽰假。 下⾯是⼀个例⼦程序。
#include #include int main(){ _Bool a = 1; _Bool b = 2; /* 使⽤⾮零值,b的值为1 */ _Bool c = 0; _Bool d = -1; /* 使⽤⾮零值,d的值为1 */ printf("a==%d, /n", a); printf("b==%d, /n", b); printf("c==%d, /n", c); printf("d==%d, /n", d); printf("sizeof(_Bool) == %d /n", sizeof(_Bool)); system("pause"); return EXIT_SUCCESS; }
运⾏结果如下:(只有0和1两种取值)
a==1, b==1, c==0, d==1, sizeof(_Bool) == 1
system的头文件3. 使⽤stdbool.h
在C++中,通过bool来定义布尔变量,通过true和false对布尔变量进⾏赋值。C99为了让我们能够写出与
C++兼容的代码,添加了⼀个头⽂件。在gcc中,这个头⽂件的源码如下:(注,为了清楚,不重要的注释部分已经省略)
/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. This file is part of GCC. */ #ifndef _STDBOOL_H #define _STDBOOL_H #ifndef __cplusplus #define bool_Bool #define true1 #define false0 #else /* __cplusplus ,应⽤于C++⾥,这⾥不⽤处理它*/ /* Supporting in C++ is a GCC extension. */ #define _Boolbool #define boolbool #define falsefalse #define truetrue #endif /* __cplusplus */ /* Signal that all the definitions are present. */ #define __bool_true_false_are_defined1
#endif/* stdbool.h */
可见,stdbool.h中定义了4
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论