为什么布尔数据类型没有在 C 中实现

2023-11-25

有朋友问了一个问题,为什么没有BooleanC 编程语言中的数据类型。我做了一些搜索和阅读。我在堆栈溢出中得到了一些问题和答案,

  1. 所有数据类型都应该是可寻址的,但位不能寻址。
  2. 主流CPU硬件层面的基本数据结构是字节。对这些 CPU 中的位进行操作需要额外的处理。

我们可以这样使用 bool

#define bool int
#define TRUE 1
#define FALSE 0

or use typedefs.

但我的问题是:为什么它没有在 C 中作为数据类型实现,即使经过了这么多年。实现单字节数据类型来存储布尔值而不是使用是否有意义int or short明确地。


这不再是真的了。内置布尔类型,又名_Bool可用时间为C99。如果你包括stdbool.h,它的别名bool也为您服务。


_Bool是真正的本机类型,而不是别名int。至于它的大小,标准只规定它足够大来存储0 and 1。但实际上,大多数编译器确实会调整其大小1:

例如,这个ideone 上的代码片段输出1:

#include <stdio.h>
#include <stdbool.h>
int main(void) {
    bool b = true;
    printf("size of b: %zu\n", sizeof(b));
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么布尔数据类型没有在 C 中实现 的相关文章

  • 无法在 CUDA 中找到 1 到 100 数字的简单和?

    我正在研究使用 CUDA 的图像处理算法 在我的算法中 我想使用 CUDA 内核找到图像所有像素的总和 所以我在cuda中制作了内核方法 来测量16位灰度图像的所有像素的总和 但我得到了错误的答案 所以我在cuda中编写了一个简单的程序来查
  • 使用 POST 的 HttpWebRequest 的性能

    我有一个用于测试网络服务的小工具 它可以使用 POST 或 GET 调用 Web 服务 使用POST的代码是 public void PerformRequest WebRequest webRequest WebRequest Creat
  • 每个元素的 asp.net Web 表单自定义错误消息

    我创建了一个 Web 应用程序 表单 以及后端 SQL 插入和查询 目前我正在显示所有用户错误消息 div style padding 1em div
  • 如何在 C# 中以编程方式将行添加到 DataGrid?

    正如标题所述 我正在尝试使用 C 以编程方式将行添加到 DataGrid 但我似乎无法使其工作 这是我到目前为止所拥有的 I have a DataGrid declared as dg in the XAML foreach string
  • 如何在 Linux 上重新实现(或包装)系统调用函数?

    假设我想完全接管 open 系统调用 也许要包装实际的系统调用并执行一些日志记录 一种方法是使用 LD PRELOAD http scaryreasoner wordpress com 2007 11 17 using ld preload
  • ASP.NET - Crystal Report Viewer 打印按钮在 ASP.NET 中不起作用

    我正在使用 Visual Studio 2008 但我遇到了水晶报告问题 当我单击打印按钮时 它会将我带到弹出窗口 但未找到页面 弹出的网址是 http localhost aspnet client System Web 2 0 5072
  • DateTime.ParseExact - 为什么 yy 变成 2015 而不是 1915

    为什么 NET 假定以下年份是 2015 年 而不是 1915 年 var d DateTime ParseExact 20 11 15 dd MM yy new CultureInfo en GB 我想 它会尝试接近 但其背后是否有合理的
  • 如何从 Powerpoint 2010 导出电影?

    如何使用 MS Office PIA 主互操作程序集 或其他方式以编程方式将嵌入视频从 powerpoint 2010 导出到外部文件 在演示文稿中嵌入视频是 Powerpoint 2010 中的一项新功能 我找不到解决方案 PPTX 文件
  • 为什么连续抛出 2 个异常不会生成无法访问的代码警告?

    为什么以下代码行不会创建编译器警告 void Main throw new Exception throw new Exception 据我所知 编译器应该通知您无法到达第二个抛出异常 这显然是一个编译器错误 它是在 C 3 0 中引入的
  • MPI - 发送和接收列

    我需要从一个进程发送矩阵列并从另一个进程接收它 我尝试运行以下程序 但得到了一个奇怪的结果 至少我这么认为 仅复制矩阵的第一个元素 某些矩阵元素会发生意外变化 include
  • 在一个解决方案中调用不同项目的方法

    1 个解决方案中有 3 个项目 我对第一个项目中的主文件进行的主要操作 但是我需要调用第三个项目中的方法并使用类 例如 第三个项目有 public DataClasses1DataContext base global WindowsFor
  • g++ / gcc 是否支持 C++20 新的atomic_flag 功能?

    根据参考参数 https en cppreference com w cpp atomic atomic flag c 20 有丰富的 对我来说有用的 支持atomic flag运营 然而 目前尚不清楚 gcc 是否支持这些功能 它们在任何
  • 让 Windows 尝试读取文件

    我正在对 Windows 文件系统进行某种封装 当用户请求打开文件时 Windows 调用我的驱动程序来提供数据 在正常操作中 驱动程序返回缓存的文件内容 但是 在某些情况下 实际文件没有缓存 我需要从网络下载它 问题是是否有可能让 Win
  • 为什么我可以在另一个函数中定义一个函数?

    请参阅下面的代码 我在另一个函数中定义了一个函数 void test1 void void test2 void printf test2 n printf test1 n int main void test1 return 0 这个用法
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整
  • 尝试后终于没有被调用

    由于某种原因 在我的控制台应用程序中 我无法运行我的finally 块 我编写这段代码是为了测试finally块是如何工作的 所以它非常简单 static void Main int i 0 try int j 1 i Generate a
  • 如何配置 qt Creator 以显示 C++ 代码而不是反汇编程序?

    昨天我做了很多事情 比如更新 GCC Clang 和重新安装 Qt Creator 今天 在逐步调试我的代码时 调试器显示的是反汇编代码 而不是我编写的 C 代码 紧迫F10 or F11 调试器正在进入汇编代码而不是 cpp nor h我
  • 如何将模型绑定到动态创建的类 nancyfx

    首先感谢任何愿意查看我的问题的人 我对 Nancyfx 还很陌生 在尝试将 JSON 有效负载绑定到动态创建的类时遇到问题 我按照这篇文章中的代码动态创建了该类 在C 中动态创建一个类 https stackoverflow com que
  • Adobe Illustrator 中的折线简化如何工作?

    我正在开发一个记录笔划的应用程序 您可以使用定点设备来绘制笔划 在上图中 我绘制了一个笔划 其中包含 453 个数据点 我的目标是大幅减少数据点的数量 同时仍然保持原始笔画的形状 对于那些感兴趣的人 上图笔画的坐标可以作为GitHub 上的

随机推荐

  • 连接两个 gatsby 节点

    所以 我正在使用盖茨比 mdx用于从 MDX 文件创建站点的插件 我想在 SitePage 对象和 Mdx 对象之间创建关联 以便我可以对 SitePage 边缘执行一个 graphQL 查询来构建站点导航 我的大部分代码都是用 TypeS
  • 如何链接没有字幕的 YouTube 视频?

    可以链接吗youtubeHTML 代码中的视频不显示其字幕 字幕 假设我有以下视频 http www youtube com watch v kTvHIDKLFqc 它有默认的英文字幕 但是 当链接该视频时 我想在没有它们的情况下加载它 是
  • C++ 中正态分布的随机数

    作为 C 的完全初学者 我想从正态分布生成一个随机数 使用以下代码 源自此post 我能够这样做 include
  • 我可以在 Windows 7 上使用 C# .NET 开发 Blackberry 应用程序吗

    嘿 我非常有兴趣为黑莓操作系统构建一个应用程序 我可以用 C 来做吗 Blackberry 还推出了 Visual Studio 插件 但您将如何将其与模拟器一起使用 不 你做不到 你必须使用Java来做黑莓开发 黑莓曾经有一个 C C A
  • 使用 ggplot2 以粗体显示各个轴标签

    改编自这个问题和解决方案的问题 使用 ggplot2 以粗体突出显示各个轴标签 我想根据满足标准有选择地证明水平轴标签的合理性 因此 借用上述问题和答案 我设置了一个示例 require ggplot2 require dplyr set
  • 如何在 CSS 中用 div 制作尖箭头

    如何在 CSS 中制作尖箭头 不只是一个三角形 而是一个有茎的三角形 就像用弓射出的传统箭一样 我试图通过创建一个 div 容器来做到这一点 其中包含两个容器 左容器和右容器 右侧将包含三角形 左侧将包含三个 div 其中心将被着色以创建主
  • AdMob 在 Android 中需要哪些权限

    On 谷歌的网站他们只提到其中两个
  • 记录 Excel 自动完成的 VBA 代码

    使用VBA编写要在Excel中使用的自定义函数时 如何编写文档注释以便在自动填充公式期间自动显示Excel 例如 当我们开始输入 VLookUp 时 它会显示 Vlookup 作为工具提示的作用 显示输入变量名称 如果我们按功能区中的 插入
  • 静态变量被初始化两次

    考虑我在编译单元中有一个静态变量 它最终出现在static库 libA 然后我有另一个编译单元访问这个变量 最终出现在shared库 libB so 因此 libA 必须链接到 libB 最后我有一个 main 函数也直接从 A 访问静态变
  • iOS 7 - 调整状态栏

    我无法确定如何调整 iOS7 中的状态栏 我的视图控制器有一个tableView 我想要tableView在状态栏下启动 目前 它与状态栏重叠 顶部的标签是headerView in the tableView 我已通过 IB 在视图控制器
  • 矩阵列表中每个元素的平均值

    我有一个包含三个矩阵的列表 a lt matrix runif 100 b lt matrix runif 100 c lt matrix runif 100 mylist lt list a b c 我想获得三个矩阵中每个元素的平均值 我
  • Python3添加日志级别

    我有这段代码 对我来说效果很好 import logging import logging handlers logger None def create logger global logger logger logging getLog
  • jQuery 点击事件在移动浏览器中不起作用

    jQuery 单击事件似乎没有在移动浏览器中触发 HTML如下 ul class menu li a href home HOME a li li class publications PUBLICATIONS amp PROJECTS l
  • C# 的远程 SQL 服务器的正确连接字符串

    我只想知道远程 sql server Express 版本的正确 sql 连接字符串 这就是我得到的 但我遇到了一些问题 SqlConnection cs new SqlConnection Data Source IP Address P
  • 承诺和摩卡:是否在之前完成()?

    我在读关于摩卡承诺测试的一些教程 有一段代码 before function done return Promise resolve save article then function done Why done 调用在then in t
  • 翻译源代码中的注释和区域名称

    有谁知道批处理程序或 VS 2010 插件 脚本可以让我将注释和区域名称从中文翻译成英文 我发现的唯一一个要么处理所有字符串 要么一次只处理一个字符串 我有两个大型 C 项目正在尝试通读 Thanks 使用 PrepTags 准备要翻译的文
  • C# Socket.Receive 消息长度

    我目前正在开发一个 C Socket 服务器 它可以接受来自多个客户端计算机的多个连接 服务器的目标是允许客户端 订阅 和 取消订阅 服务器事件 到目前为止 我已经很好地观察了这里 http msdn microsoft com en us
  • Excel循环遍历行并将单元格值复制到另一个工作表

    我在实现我的预期结果方面面临一些困难macro 意图 我有一个数据列表sheets input column A 具有值的行数会有所不同 因此我创建了一个循环来运行宏 直到活动单元格为空 我的宏从Range A2 并一直向下延伸到 A 列
  • 为什么我们在nodejs中使用导出?

    我是 Nodejs 的新手 就我而言module exports and exports两者都是空对象 module exports可以暴露函数 whileexports可不至于此 一切都可以通过 module exports 来实现 那么
  • 为什么布尔数据类型没有在 C 中实现

    有朋友问了一个问题 为什么没有BooleanC 编程语言中的数据类型 我做了一些搜索和阅读 我在堆栈溢出中得到了一些问题和答案 所有数据类型都应该是可寻址的 但位不能寻址 主流CPU硬件层面的基本数据结构是字节 对这些 CPU 中的位进行操