C语言深度剖析——bool类型,浮点数相等比较。

2023-11-10

目录

序言:

一.bool类型

(1)C语言中到底有没有bool类型?

(2)VS中的BOOL类型

二.浮点数与 0 比较

(1)浮点数的精度缺失

(2)浮点数判断相等解决方案

(3)判断浮点数是否为 0

最后:


序言:

C语言中有很多类型,但是bool我们至今也没有见过。那到底C语言中到底有没有bool类型呢?

我们之前聊过浮点数的在内存中的存储问题,由于浮点数在内存中比较特殊的存储结构,也造成了浮点数在判断相等的时候,有着比较特殊的比较方法。今天我们也就聊一聊这两个问题。

一.bool类型

(1)C语言中到底有没有bool类型?

c99之前,主要是c90标准是没有的,目前大部分书,都是认为没有的。因为书,一般都要落后于行业。
但是c99引入了_Bool类型(你没有看错,_Bool就是一个类型,不过在新增头文件stdbool.h中,被重新用宏写成了bool,为了保证C/C++兼容性)。

演示代码:

#include<stdio.h>
#include<stdbool.h>
int main()
{
	_Bool ret1 = false;
	_Bool ret2 = true;

	bool ret3 = false;
	bool ret4 = true;
	return 0;
}

 这两种写法当然都是正确的,都能编译通过。只不过bool是_Bool宏定义。

 

 那么我们就可以来看一看bool类型占用几个字节,

 

 我们查看 true 和 false 底层也是用 0 和 1 宏定义的。

 占用一个字节,理论上也就不难理解,表示真假一个bit就够了,不过这个问题还得取决于编译器,VS2013,VS2017,VS2019,VS2022,都认为是一个字节。

但是因为,目前编译器对C99特性的支持并不全面,所以我们在编码的时候,还是以C90的认识去编码就可以了,使用整形的方式表示真假,0表示假,非0表示真。

(2)VS中的BOOL类型

我们来看一段代码:

#include<stdio.h>
#include<stdbool.h>
#include<Windows.h>
int main()
{
	BOOL ret = true;
	
	printf("%d\n", sizeof(BOOL));
	return 0;
}

 BOOL类型包含在我们的头文件 windows.h 里面。

 我们发现,竟然也能编过。。。什么鬼??
这都是Microsoft自己搞的一套BOOL值。在vs中转到BOOL对应的头文件,翻到最上面,就能看到微软的版权信息。好了,该听谁的??微软?强烈不推荐,用微软的标准微软也不能给我们发offer,一个好的习惯是:一定要保证代码的跨平台性,微软定义的专属类型,其他平台不支持。为了保证代码跨平台性,以后如果有使用的话,还是选择使用C99标准。

二.浮点数与 0 比较

(1)浮点数的精度缺失

我们之前讲过浮点数的存储问题了,我们知道浮点数在往计算机的存储的时候都是二进制的存储方式,但是有一些浮点数并不像我们想的,是完整存储的,在十进制转化成为二进制,是有可能有精度损失的。注意这里的损失,不是一

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言深度剖析——bool类型,浮点数相等比较。 的相关文章

  • 让CHAT介绍下V2ray

    CHAT回复 V2Ray是一个网络工具 主要用于科学上网和保护用户的网络安全 它的名字源自Vmess Ray 光线 通过使用新的网络协议 为用户提供稳定且灵活的代理服务 下面是一些V2Ray的主要特性 1 多协议支持 V2Ray 提供了大量
  • 软件测试|sqlalchemy relationship

    简介 SQLAlchemy是一个流行的Python ORM 对象关系映射 库 它允许我们以面向对象的方式管理数据库 在SQLAlchemy中 relationship 是一个重要的功能 用于建立表之间的关系 在本文中 我们将详细探讨 rel
  • 电商数据api拼多多接口获取商品实时数据价格比价api代码演示案例

    拼多多商品详情接口 接口接入入口 它的主要功能是允许卖家从自己的系统中快速获取商品详细信息 通过这个接口 卖家可以提取到商品的各类数据 包括但不限于商品标题 价格 优惠价 收藏数 下单人数 月销售量等 此外 还可以获取到商品的SKU图 详情
  • 用CHAT分析高校体育智慧教学体系构建与探索研究现状

    CHAT回复 现阶段 高校体育智慧教学体系的构建与探索研究还处于初级阶段 但全球数字化转型大潮的推动下 一些较为前沿的研究和实践已经开始出现 1 教学平台的建设 很多高校已经开始尝试使用在线教育平台进行体育教学 把传统的面对面授课模式转变为
  • 软件测试|教你使用Python下载图片

    前言 我一直觉得Windows系统默认的桌面背景不好看 但是自己又没有好的资源可以进行替换 突然我一个朋友提醒了我 网络上的图片这么多 你甚至可以每天换很多个好看的背景 但是如果让我手动去设置的话 我觉得太麻烦了 我不如使用技术手段将图片下
  • 【计算机毕业设计】电商个性化推荐系统

    伴随着我国社会的发展 人民生活质量日益提高 于是对电商个性化推荐进行规范而严格是十分有必要的 所以许许多多的信息管理系统应运而生 此时单靠人力应对这些事务就显得有些力不从心了 所以本论文将设计一套电商个性化推荐系统 帮助商家进行商品信息 在
  • 【硕士论文复现】可再生能源发电与电动汽车的协同调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1 上层问题 1 2 下层问题 2 运行结果
  • 2024诸多大厂春招提前启动!Android的程序员还在等什么

    春招 提前批 已开 xdm别打瞌睡了 格力 顺丰 酷狗 沃尔玛中国 理想 科大讯飞等开启春招 开始收简历了 还有hc的企业提前抢人 春招时间短 节奏快 招满即止 就算挂了也绝不能不投 对企业来说 秋招和春招都是储备人才的黄金时期 春招中 除
  • Android Navigation的四大要点你都知道吗?

    在JetPack中有一个组件是Navigation 顾名思义它是一个页面导航组件 相对于其他的第三方导航 不同的是它是专门为Fragment的页面管理所设计的 它对于单个Activity的App来说非常有用 因为以一个Activity为架构
  • 最新整理Java面试八股文,大厂必备神器

    在看这篇文章之前 我想我们需要先搞明白八股文是什么 明清科举考试的一种文体 也称制义 制艺 时文 八比文 八股文章就四书五经取题 内容必须用古人的语气 绝对不允许自由发挥 而句子的长短 字的繁简 声调高低等也都要相对成文 字数也有限制 八股
  • APP开发毕业设计|ssm爱心小屋公益机构智慧管理APP

    作者主页 编程指南针 作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智
  • 15天学会Python深度学习,我是如何办到的?

    陆陆续续有同学向我们咨询 Python编程如何上手 深度学习怎么学习 如果有人能手把手 一对一帮帮我就好了 我们非常理解初学者的茫然和困惑 大量视频 书籍 广告干扰了大家的判断 学习Python和人工智能 成为内行人不难 为此 我们推出了
  • 【一种新的Burton-Miller型奇异边界方法(BM-SBM)】用于声学设计灵敏度分析,2D和3D声学设计灵敏度分析的奇异边界方法研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 2D 2 2 3D
  • 2024年华为OD机试真题-靠谱的车-Python-OD统一考试(C卷)

    题目描述 程序员小明打了一辆出租车去上班 出于职业敏感 他注意到这辆出租车的计费表有点问题 总是偏大 出租车司机解释说他不喜欢数字4 所以改装了计费表 任何数字位置遇到数字4就直接跳过 其余功能都正常 比如 1 23再多一块钱就变为25 2
  • 2024年华为OD机试真题-分割均衡字符串-Python-OD统一考试(C卷)

    题目描述 均衡串定义 字符串只包含两种字符 且两种字符的个数相同 给定一个均衡字符串 请给出可分割成新的均衡子串的最大个数 约定字符串中只包含大写的 X 和 Y 两种字符 输入描述 均衡串 XXYYXY 字符串的长度 2 10000 给定的
  • 基于节点电价的电网对电动汽车接纳能力评估模型研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 计算机Java项目|有机蔬菜商城

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 【C#】基础巩固

    最近写代码的时候各种灵感勃发 有了灵感 就该实现了 可是 实现起来有些不流畅 总是有这样 那样的卡壳 总结下来发现了几个问题 1 C 基础内容不是特别牢靠 理解的不到位 导致自己想出来了一些内容 但是无法使用正确的C 代码实现 导致灵感无法
  • 2024最强Java面试八股文合集(持续更新)

    今天要谈的主题是关于求职 求职是在每个技术人员的生涯中都要经历多次 对于我们大部分人而言 在进入自己心仪的公司之前少不了准备工作 有一份全面细致 面试题 将帮助我们减少许多麻烦 在跳槽季来临之前 特地做这个系列的文章 一方面帮助自己巩固下基
  • sychnorized积累

    sychnorized 1 对象锁 包括方法锁 默认锁对象为this 当前实例对象 和同步代码块锁 自己指定锁对象 2 类锁 指synchronize修饰静态的方法或指定锁对象为Class对象 3 加锁和释放锁的原理 现象 时机 内置锁th

随机推荐

  • qt学习笔记(八)之深入QSqlQuery

    在上一节中 我们直接调用QSqlQuery exec 对数据库进行增删改查等简单操作 在项目开发中 为了实现系统的低耦合 我们就必须封装出一个数据库功能模块 一 prepare 首先创建一个头文件 attend db h 初始化数据库操作
  • 【ES实战】_forcemerge API 使用说明

    forcemerge API 使用说明 文章目录 forcemerge API 使用说明 强制合并segment文件 API 语法 可选参数 多索引操作 使用案例 查找存在删除文档的索引 查看线程池情况 查看segment情况 查看任务 1
  • HBase集群升级, 通过HBase rpm 或 tar包形式(以HDP 为例,包含 升级及HBCK2 介绍和使用)

    目录 1 前言 2 编译 HBase 报错处理 Caused by java lang AbstractMethodError org apache hadoop hbase ipc RpcScheduler getMetaPriority
  • 小程序中安装@vant依赖

    大家好 我是雄雄 今天给大家分享一篇 关于小程序中如何安装 vant依赖 小程序中安装 vant依赖 cd miniprogram npm i vant weapp S production 将node modules文件夹下面的 vant
  • 用GPT-4 写2022年天津高考作文能得多少分?

    正文共 792 字 阅读大约需要 3 分钟 学生必备技巧 您将在3分钟后获得以下超能力 积累作文素材 Beezy评级 B级 经过简单的寻找 大部分人能立刻掌握 主要节省时间 推荐人 Kim 编辑者 Linda 图片由Lexica 生成 输入
  • 一步一步学Qt(Qt Quick)/qml 开发第五篇(第一个可视的应用)

    现在我们开始仿照官网的demo做一个小东西 开始之前先看效果图 android如下 下面开始正文 因为在开始搞这个demo的时候 我遇到一个问题 所以为了避免这个 我将从创建项目开始 OK 废话不多说 第一步 打开你的QtCreator 选
  • SSH框架整合教程

    工程目录结构如下 本工程只介绍SSH整合的基本流程 所以没有写接口 1 导入jar包
  • CISSP-安全与风险管理

    安全管理 安全治理 Management 管理 管理者为了达到特定目的而对管理对象进行的计划 组织 指挥 协调和控制的一系列活动 governance 治理 治理是或公或私的个人和机构进行经营 管理相同事务的诸多方式的总和 安全治理是支持
  • mysql和sqlServer备份表以及表字段同步sql语句

    前言 要备份的表 old tablename 新表 new table name sql创建出新的表 old tablename ddl如下 CREATE TABLE exe type EXE TYPE ID int NOT NULL AU
  • 有趣的代码:一行Python代码能干嘛?

    前言 python有很多优雅有趣的代码写法 同时还很简短 以至于当我刚开始接触这个编程语言的时候 就爱不释手 而前几天的编程语言榜单中python也超越了java成为了第一 挺替python开心的 python到底有多有趣呢 一行代码告诉你
  • 版本号校验 例如V0.0.0.1和V0.0.0.2

    版本号比较 param v1 param v2 return 0代表相等 1代表左边大 1代表右边大 public int compareVersion String v1 String v2 v1 v1 substring 1 v1 le
  • Go学习教程大纲

    以下是Go学习教程的大纲 第一部分 基础知识 Go简介 什么是Go Go的历史和发展 Go的特点和优势 开发环境的搭建 安装Go编译器 配置开发环境 第一个Go程序 Hello World程序 程序的结构 编译和运行程序 数据类型和变量 基
  • 【拆盲盒啦】摸鱼时间到! iPhone 12、AirPods Pro、罗技鼠标等你拆~

    喜迎开学季 C 站开豪礼 最高可开 iphone 12 盲盒开出的不只是一份礼物 更是对于一切美好的期待 拆开一个盲盒 就像开始一场未知的爱丽丝梦游仙境 为 两点一线 朝九晚九 的生活 埋下一刻期待的种子 去收获一份未知的惊喜 这次 价格再
  • C++面向对象求圆的周长和面积

    include
  • 物联网上行数据实现tcp 负载均衡和高可用架构 nginx + keepalived方案

    文章目录 需求介绍 架构设计 具体配置 nginx 配置 keepalived 配置 需求介绍 之前有做过一个物联网设备接入的项目 项目中会启动一个数据接入服务 TCP server 用来接收传感器设备上传的数据 数据接入服务需要分布式部署
  • 文件系统的基本认知笔记

    1 什么是文件系统 常规认知 Linux下的根目录 文件系统是操作系统用于明确存储设备 常见的是磁盘 也有基于NAND Flash的固态硬盘 或分区上的文件的方法 即在存储设备上组织文件的方法 这种所谓的方法就是文件管理系统 程序 简称文件
  • Mac下使用Git和Git客户端

    先到git官网 https git scm com download 下载安装 这里的git服务器使用本地虚拟机centos来模拟 创建一个用户 名为gitter 用于专门管理git相关 adduser gitter passwd gitt
  • 飞翔的圆(Flappy Bird)游戏源码完整版

    这个源码是一个不错的休闲类的游戏源码 飞翔的圆 Flappy Bird 游戏源码V1 0 本项目是一个仿Flappy Bird的小游戏 只不过是把Flappy Bird里面的鸟替换成了简单的圆 感兴趣的朋友可以研究一下 本项目默认编码GBK
  • 【Ubuntu安装 Nginx】

    ubuntu安装nginx 目前支持两种安装方式 一种是apt get的方式 另一种是根据包安装的方式 为方便我统一使用root用户 一 apt get安装nginx 切换至root用户 sudo su root apt get insta
  • C语言深度剖析——bool类型,浮点数相等比较。

    目录 序言 一 bool类型 1 C语言中到底有没有bool类型 2 VS中的BOOL类型 二 浮点数与 0 比较 1 浮点数的精度缺失 2 浮点数判断相等解决方案 3 判断浮点数是否为 0 最后 序言 C语言中有很多类型 但是bool我们