【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 1int 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。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图片上传下载

数据模型: imageUrl: , <el-form-item label"楼盘图片:" prop"pic" class"uploadImg" v-model"emp.pic"> <el-upload class"avatar-uploader" …

自制java工具实现 ctrl+c+c 翻译鼠标选中文本

前言 本功能的实现基于这篇笔记 http://t.csdnimg.cn/1I8ln&#xff0c;本文阅读过程中有疑惑都可以查看此笔记 实现思路&#xff1a;检测到按压ctrl c c 后&#xff0c;获取当前剪切板文字&#xff0c;调用百度翻译api。 实现结果&#xff1a; 完整代码在最后 实现过程 1 监控…

关于鸿蒙的笔记整理

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、关于样式1 . 默认单位 vp2 . 写公共样式 二 、 加载图片三 、 父子组件传值四 、 自定义构建函数 Builder五、构建函数-BuilderParam 传递UI 一、关于样式 1 .…

Java中请求生成唯一追溯TraceId

Java中请求生成唯一追溯TraceId 一&#xff1a;背景 因为是微服务架构,平常日志太多,看日志不太好查,所以想要从一整个链路当中获取一个唯一标识,比较好定位问题&#xff0c; 原理就是从gateway网关将标识传递到下游,下游服务拿到这个标识,响应结束后将traceId反向写入响应体…

[论文笔记] Megtron_LM 0、报错:vscode调试无法传进去参数 launch.json文件获取args参数

解决方法&#xff1a; 配置好launch.json文件后&#xff0c;应该点运行和调试里面的运行按钮。而不是直接点文件右上角的debug。 可以看到terminal中&#xff0c;如果没有正常加载launch.json&#xff0c;则参数中没有args的参数。 如果正常加载&#xff0c;可以看到args的很多…

匿名内部类为什么泄漏,Lambda为什么不泄漏(案例不涉及持外部引用的情况,即:只分析匿名内部类和Lambda内部类情况)

theme: channing-cyan 在Android开发中&#xff0c;内存泄露发生的场景其实主要就两点&#xff0c;一是数据过大的问题&#xff0c;而是调用与被调用生命周期不一致问题&#xff0c;对于对象生命周期不一致导致的泄漏问题占90%&#xff0c;最常见的也不好分析的当属匿名内部类…

Java中的IO与NIO篇----第四篇

系列文章目录 文章目录 系列文章目录前言一、NIO 的非阻塞二、Channel三、Buffer四、Selector前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一、NIO 的非阻塞 I…

Java:HeapMemory和DirectMemory配置与使用介绍

目录 一、Heap内存 1、查看Heap内存配置的最大值 2、配置Heap内存最大值的方式 3、配置Heap内存最小值的方式 4、查看已使用Heap内存的方式 5、查看未使用Heap内存的方式 二、Direct内存 1、查看Direct内存配置的最大值 2、配置Direct内存最大值的方式 3、获取Direct…

C++ OpenGL 3D GameTutorial 1:Making the window with win32 API学习笔记

视频地址https://www.youtube.com/watch?vjHcz22MDPeE&listPLv8DnRaQOs5-MR-zbP1QUdq5FL0FWqVzg 一、入口函数 首先看入口函数main代码&#xff1a; #include<OGL3D/Game/OGame.h>int main() {OGame game;game.Run();return 0; } 这里交代个关于C语法的问题&#x…

释放创造力:可视化页面渲染引擎在低代码开发平台的应用

本文由葡萄城技术团队发布。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 什么是页面渲染引擎? 页面渲染引擎是低代码开发平台的核心组件之一&#xff0c;它负责将开发者设计的页面布局和用户…

计算机网络学习笔记(5)——运输层

本文继续整理计算机网络体系架构知识内容。今日主讲——运输层。 网络层只把分组发送到目的主机&#xff0c;但是真正通信的并不是主机而是主机中的进程。 运输层提供了应用进程间的逻辑通信。运输层向高层用户屏蔽了下面网络层的核心细节&#xff0c;使应用程序看 见的好像在两…

python+selenium爬虫笔记

本文只是做例子&#xff0c;具体网站路径麻烦你们换下&#xff0c;还有xpath路径也换下 一、安装所需要的组件&#xff08;此处采用谷歌&#xff09; 1、安装驱动 查看你的浏览器版本&#xff0c;去安装对应的版本 下载驱动 下载驱动路径 之前版本的 输入这个路径下载下来解压…

js api scrollIntoView

前言 今天记录一个非常常用的js api scrollIntoView 它可以轻易的让目标元素滚动到可视范围之内&#xff0c;而无需手动计算偏移量 一、用法 document.querySelector(.dept-title).scrollIntoView()二、参数 scrollIntoView() scrollIntoView(boolean) 默认为 true&#xf…

TikTok革新游戏规则:解读短视频对社交媒体的影响

在社交媒体的巨浪中&#xff0c;TikTok以其独特的短视频形式和强大的创意社区&#xff0c;重新定义了游戏规则。这个以15秒视频为核心的平台&#xff0c;不仅让用户获得了表达自我的新方式&#xff0c;更深刻地影响了社交媒体的演进。本文将深入解读TikTok对社交媒体的影响&…

支持下载和阅读的漫画管理工具Teemii

什么是 Teemii &#xff1f; Teemii 是一款专为狂热漫画读者设计的精简 Web 应用程序。它为阅读和管理漫画集提供了一个简单而高效的平台。主要功能包括跨平台访问、浏览器内阅读、强大的元数据聚合器以及馆藏自动更新。Teemii 是专为那些寻求更加个性化和自主的方法来管理漫画…

[Kubernetes]4. 借助腾讯云TKE快速创建Pod、Deployment、Service部署k8s项目

前面讲解了通过命令行方式来部署k8s项目,下面来讲讲通过腾讯云TKE来快速创建Pod、Deployment、Service部署k8s项目,云平台搭建Kubernetes可参考[Kubernetes]1.Kubernetes(K8S)介绍,基于腾讯云的K8S环境搭建集群以及裸机搭建K8S集群 一.通过腾讯云TKE创建集群 1.创建集群 参考上…

Kibana 自定义索引连接器告警

一、 创建索引 PUT ipu-cbs-warning-info{"settings" : {"number_of_shards" : 1},"mappings" : {"properties" : {"timestamp": {"type": "date"},"rule_id" : { "type" : "…

经纬度的作用

当我们在手机上使用导航软件或者在网上查找地址时&#xff0c;经常会发现一个选项&#xff0c;就是显示当前位置的经纬度。那么&#xff0c;什么是经纬度&#xff0c;它有什么作用呢&#xff1f; 经纬度是用来确定地球上任何一个点位置的坐标系统。它由两个数值组成&#xff0…

spring常用注解(一)springbean生命周期类

一、PostConstruct&#xff1a; 被PostConstruct修饰的方法会在服务器加载Servlet的时候运行&#xff0c;并且只会被服务器调用一次&#xff0c;类似于servlet的inti()方法。被PostConstruct修饰的方法会在构造函数之后&#xff0c;init()方法之前运行。

网站内链和外链接的作用分析

一、浅谈内链与分析内链的作用 大家都知道网站内容的重要性&#xff0c;但很多站长还是停留在只更新网站内容等程度上。却忽视了做网站内链的作用。   网站内链的目的是为了更好的让搜索引擎抓取网站的内容&#xff01;和突出网站关键字的特点&#xff01;还有就是文章关键…