【C语言】stdbool.h——有关bool的总结

在编程和日常生活中,经常需要一种只能具有两个值之一的数据类型,如是否、开关、真假等,因此,C 有一种bool数据类型,称为booleans 。布尔值表示 或true的值false

C 中的 bool 是大多数语言中的基本数据类型,可以保存两个值之一:true 或 false,1或0。它用于表示逻辑值,常用于编程中控制 if-else 语句、while 循环和 for 循环等决策语句的执行流程。判断条件为真(true或1),则执行语句。

C 中的布尔值

在 C 中,bool 数据类型不是内置数据类型。但是,C 语言的 C99 引入了_Bool,无序头stdbool头文件便可使用true和false,可以使用以下不同的方法在 C 中实现bool类型:

  1. 使用头文件"stdbool.h"
  2. 使用枚举类型
  3. 使用define声明布尔值

1. 使用头文件"stdbool.h"

要在 C 中使用 bool,必须包含头文件"stdbool.h"。包含 stdbool.h 库后,我们可以使用该数据类型,因为 stdio.h 库不提供布尔值。

  • bool:定义为_Bool
  • true:定义为1。
  • false:定义为0。
  • __bool_true_false_are_defined:定义为1。
c 复制代码
/*
	可以将主函数中的代码复制到另外两个中,对比一下他们之间的相似和不同
*/

#include <stdio.h>
#include <stdbool.h>

int main(){
    printf("%d\n", sizeof(bool));

    printf("true: %d\n", true);
    printf("false: %d\n", false);

    bool b1 = -1;
    bool b2 = 'a';
    bool b3 = 0;
    printf("%d\n", b1);
    printf("%d\n", b2); 
    printf("%d\n", b3);
    return 0;
}
  • 结果

  • sizeof(bool) 的值为1

  • 为bool型变量赋值,非零值赋值为1(true),零值赋值为0(false)

  • true与1(非零值)等价,false与0等价

2. 使用枚举类型

或者,可以使用枚举类型在 C 中实现 bool。这里我们没有导入库,而是声明一个枚举类型,以便使用 bool 作为数据类型。

c 复制代码
#include <stdio.h>
typedef enum { false, true } bool;
int main(){
	bool a = true;
	bool b = false;

	printf("true : %d\n", a);
	printf("false : %d\n", b);
	return 0;
}

3. 自定义宏

为 false 值分配整数值 0,为 true 值分配整数值 1。还可以使用值为 0 (false) 或 1 (true) 的 int 或 char表示 C 中的 bool 数据类型。

c 复制代码
#define bool int
#define false 0
#define true 1

int main()
{
    bool a = true;
    bool b = false;

    printf("True : %d\n", a);
    printf("False : %d\n", b);
    return 0;
}

在条件语句中使用 Bool

bool 数据类型通常用于条件语句,例如 if-else 语句。诸如 a 大于等于 b 或 b 大于 a 之类的条件可以使用布尔值来实现。这些条件使用条件运算符,如"=="、">"、<"、"!="等,返回布尔值。

c 复制代码
#include <stdbool.h>
#include <stdio.h>
int main(){
	int a = 3;
	int b = 4;
	bool b = true;
	if (a > b){
		printf("a is greater\n");
	} else {
		printf("a is smaller\n");
	}

	if (b) { // 判断条件为真,执行
		printf("b: output: true\n");
	}

	if (!b){ // 判断条件为假,不执行
		printf("!b: output: false\n");
	}
	return 0;
}

在循环中使用 bool

bool 数据类型也用于循环,例如 while 循环和 for 循环。条件语句是循环中最重要的部分之一。如果不使用返回布尔值的条件语句,我们就无法定义循环的断点,没有条件语句的循环将成为无限循环。

c 复制代码
#include <stdbool.h>
#include <stdio.h>
int main(){
	bool a = true;
	int i = 0;
	while (a) {
		printf("i is %d\n", i);
		i++;
		if (i > 5) {
			a = false;
		}
	}
	return 0;
}
  • 结果

使用 bool 作为函数返回类型

还可以使用 bool 数据类型作为函数返回类型。函数返回类型添加了返回函数内执行的所有操作的结果的功能。

c 复制代码
#include <stdbool.h>
#include <stdio.h>
bool is_even(int num){ // 判断参数是否是偶数
	if (num % 2 == 0) {
		return true;
	} else {
		return false;
	}
}

int main(){
	int num = 5;
	if (is_even(num)) {
		printf("%d is even\n", num);
	} else {
		printf("%d is odd\n", num);
	}
	return 0;
}

C 布尔常见问题解答

  1. C 语言中的布尔示例是什么?

    布尔值是 C 中的一种数据类型,它保存两个值,可以是 true 或 false。

  2. bool 的 C 标头是什么?

    "stdbool.h"是 bool 的 C 头文件。

  3. C 中布尔值的大小是多少?

    C 中的布尔值大小为 1 个字节,因为它只需要两个值 0 和 1。

  4. C使用bool还是boolean?

    Boolean 是一种可以存储 true 或 false 值的数据类型,我们在 C 中将其用作 bool。

相关推荐
magic334165632 天前
ESP32S3开发环境介绍和创建工程
vscode·c·头文件
charlie1145141913 天前
嵌入式现代C++工程实践——第10篇:HAL_GPIO_Init —— 把引脚配置告诉芯片的仪式
开发语言·c++·stm32·单片机·c
charlie1145141914 天前
嵌入式Linux模块学习——insmod 底层全流程解剖:从用户命令到内核内存
linux·c·嵌入式linux
charlie1145141914 天前
嵌入式C++教程实战之Linux下的单片机编程(9):HAL时钟使能 —— 不开时钟,外设就是一坨睡死的硅
linux·开发语言·c++·单片机·嵌入式硬件·c
charlie1145141914 天前
嵌入式Linux模块开发——struct module 深度解析:内核模块的核心数据结构
linux·开发语言·数据结构·c
charlie1145141915 天前
通用GUI编程技术——图形渲染实战(二十七)——坐标变换与矩阵:三级坐标系
c++·学习·c·图形渲染·win32
Trouvaille ~6 天前
【MySQL篇】从零开始:安装与基础概念
linux·数据库·mysql·ubuntu·c·教程·基础入门
洛水水6 天前
io_uring 深度解析
c·异步io·iouring
REDcker6 天前
Android Bionic Libc 原理与实现综述
android·c++·c·ndk·native·bionic
charlie1145141916 天前
通用GUI编程技术——图形渲染实战(二十四)——GDI Region与裁切:不规则窗口与可视化控制
c++·windows·学习·c·图形渲染·win32