【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。
/*
	可以将主函数中的代码复制到另外两个中,对比一下他们之间的相似和不同
*/

#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 作为数据类型。

#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 数据类型。

#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 之类的条件可以使用布尔值来实现。这些条件使用条件运算符,如“==”、“>”、<”、“!=”等,返回布尔值。

#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 循环。条件语句是循环中最重要的部分之一。如果不使用返回布尔值的条件语句,我们就无法定义循环的断点,没有条件语句的循环将成为无限循环。

#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 数据类型作为函数返回类型。函数返回类型添加了返回函数内执行的所有操作的结果的功能。

#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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/293368.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自由DIY预约小程序源码系统:适用于任何行业+自由DIY你的界面布局+全新升级的UI+多用户系统 带安装部署教程

随着移动互联网的普及&#xff0c;预约服务逐渐成为人们日常生活的一部分。从家政服务、医疗挂号到汽车保养&#xff0c;预约已经渗透到各个行业。然而&#xff0c;市面上的预约小程序大多功能单一&#xff0c;界面老旧&#xff0c;无法满足商家和用户的个性化需求。今天来给大…

03 decision tree(决策树)

一、decision tree&#xff08;决策树&#xff09; 1. classification problems&#xff08;纯度&#xff09; i . entropy &#xff08;熵&#xff09; ​ 作用&#xff1a;衡量一组数据的纯度是否很纯 &#xff0c;当五五开时他的熵都是最高的&#xff0c;当全是或者都不是…

fastadmin 安装QueryList

之前的项目复制过来&#xff0c;抓取数据的时候报这个错&#xff0c;于是我准备重新安装QueryList 我准备安装QueryList 4版本 安装命令&#xff1a; composer require jaeger/querylist:~V4 报错&#xff1a; 解决方法&#xff1a; 创建一个新用户和用户组&#xff0c;切换…

vivado 管理宏

管理宏 宏存储为XDC约束。根据定义&#xff0c;它们是Tcl命令。这允许要在XDC约束文件和Tcl脚本中使用并交互使用的宏。宏是使用write_xdc命令编写的。使用read_xdc读取宏命令-cell选项可用于将作用域限制为特定的单元格。-cell选项特别适用于将一个宏的相对放置应用到不同层次…

electron预加载脚本

webPreferences 指定预加载脚本,可以使用部分node脚本 webPreferences: {preload: path.join(__dirname, "preload.js"),},创建preload.js 中 测试文件读取功能 const fs require(fs) const text fs.readFileSync(package.json, utf-8)console.log(text)报错,为了…

Visual Studio 2013 “即将退休”

新年快乐&#xff01; 这也是向各位开发者提醒 Visual Studio 支持生命周期中即将到来的好时机。 对 Visual Studio 2013 的支持即将在今年(2024年)的4月9日结束。如果你正在使用旧版本的 Visual Studio&#xff0c;我们强烈建议您升级您的开发环境到最新的 Visual Studio 20…

给孩子选台灯什么样的好?分享高品质的学生护眼台灯!

在这个青少年如此高近视率的情况下&#xff0c;想要真正保护孩子的视力&#xff0c;除了需要监督孩子养成良好的用眼习惯以外&#xff0c;还要注意光线环境&#xff01;在夜晚不管是看书写字、还是使用电脑平板上网课&#xff0c;都需要一个健康的照明环境。因此在挑选孩子学习…

Electron介绍

前言 相信很多的前端小伙伴都想过一个问题&#xff0c;web技术是否可以用于开发桌面应用。答案当然是可以的&#xff0c;Electron框架就是其中的一种解决方案。 Electron介绍 Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 Electron 并不是一门新的…

.NetCore部署微服务(一)

目录 前言 什么是微服务 微服务的优势 微服务的原则 创建项目 在Docker中运行服务 客户端调用 简单的集群服务 前言 写这篇文章旨在用最简单的代码阐述一下微服务 什么是微服务 微服务描述了从单独可部署的服务构建分布式应用程序的体系结构流程&#xff0c;同时这些…

Redis 连接 命令

目录 1.Redis Echo 命令 - 打印字符串简介语法可用版本: > 1.0.0返回值: 返回字符串本身。 示例 2.Redis Select 命令 - 切换到指定的数据库简介语法可用版本: > 1.0.0返回值: 总是返回 OK 。 示例 3.Redis Ping 命令 - 查看服务是否运行简介语法可用版本: > 1.0.0返回…

【Proteus仿真】【Arduino单片机】超声波测距系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用动态数码管、按键、HCSR04超声波、蜂鸣器模块等。 主要功能&#xff1a; 系统运行后&#xff0c;数码管显示超声波检测距离&#xff0c;当检…

Apache网页优化

本章主要介绍如何对Apache网页进行优化 Apache 网页压缩Apache 网页缓存Apache 隐藏版本信息Apache 网页防盗链 目录 1、网页压缩与缓存 1.1、网页压缩 &#xff08;1&#xff09;gzip介绍 &#xff08;2&#xff09;HTTP压缩的过程 &#xff08;3&#xff09;Apache的…

Scikit-Learn线性回归(五)

Scikit-Learn线性回归五&#xff1a;岭回归与Lasso回归 1、误差与模型复杂度2、正则化3、Scikit-Learn岭&#xff08;Ridge&#xff09;回归4、Scikit-Learn Lasso回归 1、误差与模型复杂度 在第二篇文章 Scikit-Learn线性回归(二) 中&#xff0c;我们已经给出了过拟合与模型泛…

均匀与准均匀 B样条算法

B 样条曲线的定义 p ( t ) ∑ i 0 n P i F i , k ( t ) p(t) \sum_{i0}{n} P_i F_{i, k}(t) p(t)i0∑​nPi​Fi,k​(t) 方程中 n 1 n1 n1 个控制点&#xff0c; P i P_i Pi​, i 0 , 1 , ⋯ n i0, 1, \cdots n i0,1,⋯n 要用到 n 1 n1 n1 个 k k k 次 B 样条基函数 …

手游开发项目经验简单总结

这是我最近一个完整的手游开发项目的总结信息&#xff0c;请大家指点 目录 引擎 语言 编辑器 项目开发模块规划分 主项目工程&#xff0c;UI资源项目工程&#xff0c;模型场景资源项目工程 热更框架 前后端协议 UI 图集 多语言适配 SLG场景和其他场景 战斗 美术模型资源 人物…

微信怎么删除聊天记录?进来Get常用的操作方法!

微信是国内使用最广泛的社交应用程序之一。在我们使用微信的过程中&#xff0c;删除聊天记录是一个常见的操作。人们会删除一些不需要的聊天记录&#xff0c;以此减少存储空间的占用。微信怎么删除聊天记录&#xff1f;本文将介绍删除聊天记录的常用方法&#xff0c;非常简单&a…

Git保姆级安装教程

Git保姆级安装教程 一、去哪下载二、安装2.1 具体安装步骤2.2 设置全局用户签名 一、去哪下载 1、官网&#xff08;有最新版本&#xff09;&#xff1a;https://git-for-windows.github.io/ 2、本人学习时安装的版本&#xff0c;链接&#xff1a;https://pan.baidu.com/s/1uAo…

被替换的文件怎么找回?3个高效方法分享!

“我在对电脑进行清理时&#xff0c;删除了一些比较重要的文件&#xff0c;为了恢复它们&#xff0c;我重新复制了一些文件&#xff0c;这导致我原先的文件被替换了&#xff0c;这怎么办呢&#xff1f;被替换的文件还能恢复吗&#xff1f;” 在信息化时代&#xff0c;用户的电脑…

Spark四:Spark Streaming和Structured Streaming

简介 Spark Streaming整体流程和DStream介绍 Structured Streaming发展历史和Dataflow模型介绍 Spark Streaming 是一个基于 Spark Core 之上的实时计算框架&#xff0c;从很多数据源消费数据并对数据进行实时的处理&#xff0c;具有高吞吐量和容错能力强等特点。 Spark Stre…

【完整流程】实现STM32+ESP8266+MQTT+阿里云+APP——【第二节-编写STM32程序初步实现ESP8266上云发布订阅消息】

&#x1f31f;博主领域&#xff1a;嵌入式领域&人工智能&软件开发 前言&#xff1a;本节实现&#xff0c;硬件连接STM32与ESP8266&#xff0c;编写STM32程序通过at命令方式实现STM32ESP8266与阿里云物联网平台发布订阅消息&#xff0c;本节最终实现初步的发布订阅消息…