bool在c语言中的用法(通俗易懂,适合新手小白)
有些场景中,变量的取值只有两种情况。比如说,用变量 sex 存储人的性别,它的值就只有两种情况,分别是“男”和“女”。
通过前面的学习,读者已经掌握了很多种数据类型,比如 char、short、int、long、float、double 等。那么,变量 sex 的类型应该是什么呢?
在 C99 标准发布之前,对于只有两种取值的变量,没有完全适配的数据类型,退而求其次,通常选择 int 作为此变量的类型。对于 int 类型的 sex 来说,可以设定 sex 的值为 0 时表示女性,值为非 0 数时表示男性。
为了解决这个历史遗留问题,C99 标准新引入了 _Bool 类型,中文叫做布尔类型。
执行结果为:
程序里允许手动为布尔变量赋值除 1 以外的非 0 数,但变量的值为 1。例如:
执行结果为:
执行结果为:
其实除了C语言,很多编程语言都提供了布尔类型,比如 C++、Java、C# 等,它们中的绝大部分都采用“bool”作为布尔类型的名称,并且布尔类型的两种取值分别用“假(false)”和“真(true)”表示,false 代指 0,true 代指 1。
或许是受其它编程语言的影响,又或许是考虑到初学者的感受,C语言标准委员会决定引入 _Bool 类型的同时,添加 bool 作为 _Bool 类型的别名,并且布尔类型的取值可以用 true 和 false 表示。
也就是说在C语言程序中,布尔类型可以用 _Bool 表示,也可以用 bool 表示。
需要注意的点,使用 bool 类型之前,必须先引入
执行结果为:
通过前面的学习,读者已经掌握了很多种数据类型,比如 char、short、int、long、float、double 等。那么,变量 sex 的类型应该是什么呢?
在 C99 标准发布之前,对于只有两种取值的变量,没有完全适配的数据类型,退而求其次,通常选择 int 作为此变量的类型。对于 int 类型的 sex 来说,可以设定 sex 的值为 0 时表示女性,值为非 0 数时表示男性。
为了解决这个历史遗留问题,C99 标准新引入了 _Bool 类型,中文叫做布尔类型。
C语言_Bool类型
C语言标准规定,布尔类型的变量只能存储 0 和 1 这两个值。例如:#include <stdio.h> int main() { _Bool sex = 0; printf("sex = %d\n", sex); sex = 1; printf("sex = %d\n", sex); return 0; }
sex = 0
sex = 1
printf() 函数输出 _Bool 变量的值,通常使用 %d 作为格式控制符。
程序里允许手动为布尔变量赋值除 1 以外的非 0 数,但变量的值为 1。例如:
_Bool sex = 123; printf("sex = %d\n", sex);
sex1 = 1
布尔类型的长度
Bool 类型的长度可以用 sizeof 操作符查看:#include <stdio.h> int main() { printf("%ld", sizeof(_Bool)); return 0; }
1
显然,_Bool 类型的长度和 char 相同,只占用 1 个字节。C99 bool类型
布尔类型(_Bool)以下划线_开头,首字母还要大写,这和我们之前掌握的类型(char、float、int、float)相比,写法上有较大的出路,初学者多少会觉得别扭。其实除了C语言,很多编程语言都提供了布尔类型,比如 C++、Java、C# 等,它们中的绝大部分都采用“bool”作为布尔类型的名称,并且布尔类型的两种取值分别用“假(false)”和“真(true)”表示,false 代指 0,true 代指 1。
或许是受其它编程语言的影响,又或许是考虑到初学者的感受,C语言标准委员会决定引入 _Bool 类型的同时,添加 bool 作为 _Bool 类型的别名,并且布尔类型的取值可以用 true 和 false 表示。
也就是说在C语言程序中,布尔类型可以用 _Bool 表示,也可以用 bool 表示。
需要注意的点,使用 bool 类型之前,必须先引入
<stdbool.h>头文件。例如:#include <stdio.h> #include <stdbool.h> // bool、true、false int main() { bool sex = true; printf("%d", sex); return 0; }
1
总结
对于仅有两个值的变量,C99 标准建议将变量的类型设定为布尔类型,可以用 _Bool 或者 bool 表示。如果编译器不支持布尔类型,退而求其次,通常选用 int 类型。
在 C99 标准中,想用 bool 表示布尔类型,想用 true 和 false 表示布尔类型的两种取值,必须先引入<stdbool.h>头文件。
读到这里,给大家推荐一个 1.7W 字的【C语言学习小册】,能带你踹开编程的大门,让你对 C 语言本身,以及 C 语言的周边都有一个整体上的认知,阅读完后,能帮你解开很多疑问,比如:
- C语言到底是什么玩意?
- C语言到底能干什么?
- 学编程难吗?多久能学会?
- 程序员必须要学习C语言吗?
- C语言和C++到底有什么关系?
- 为什么很多人学了 C 语言感觉它屁用没有?
- 学习C语言,为什么一定要学习内存?
- 主流的C语言编译器有哪些,它们各自有什么优缺点?
系统学习 C 语言,请猛击《C语言入门教程(非常详细,尤其适合新手小白)》。

浙公网安备 33010602011771号