关于真实的表示可以假设什么?

2024-03-03

该程序返回0在我的机器上:

#include <stdbool.h>

union U {
    _Bool b;
    char c;
};

int main(void) {
    union U u;
    u.c = 3;
    _Bool b = u.b;
    if (b == true) {
        return 0;
    } else {
        return 1;
    }
}

AFAICT, _Bool是一个整数类型,至少可以存储0 and 1, and true是积分常数1。在我的机器上,_Bool has a sizeof(_Bool) == 1, and CHAR_BITS == 8, 意思就是_Bool有 256 个代表。

我在 C 标准中找不到太多关于陷阱表示的内容_Bool,我找不到是否创建_Bool具有不同的表示形式0 or 1(在支持两种以上表示的实现上)是可以的,如果可以,则这些表示表示 true 还是 false。

我在标准中可以找到的是当_Bool与一个整数进行比较,该整数被转换为0代表是否有价值0,并且到1表示,如果它的值不为零,这样上面的代码片段最终会比较两个_Bools 具有不同的表示形式:_Bool[3] == _Bool[1].

我在 C 标准中找不到太多关于这种比较结果的信息。自从_Bool是整数类型,我希望应用整数的规则,这样相等比较仅在表示相等时返回 true,但这里的情况并非如此。

由于在我的平台上该程序返回0,看来这条规则在这里不适用。

为什么这段代码的行为是这样的? (即我错过了什么?哪些表示_Bool哪些是陷阱表征,哪些不是?可以代表多少个表示true and false?填充位在此起什么作用? ETC。 )

可移植 C 程序可以假设什么表示_Bool ?


C11标准中的脚注122说:

虽然 _Bool 对象中的位数至少为 CHAR_BIT,但 _Bool 的宽度(符号和值位数)可能仅为 1 位。

所以在编译器上_Bool只有一个值位,只有一位char当你从记忆中读取它时就会生效_Bool。其他位是被忽略的填充位。

当我用 GCC 测试你的代码时,_Bool当向成员分配奇数时,成员的值为 1u.c当分配偶数时为 0,表明它只查看最低位。

请注意,上述仅适用于类型双关。如果您改为转换(隐式或显式转换)achar to a _Bool,如果char是非零的。

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

关于真实的表示可以假设什么? 的相关文章

  • 检查两个数是否是彼此的排列?

    给定两个数字 a b 使得 1 例如 123 是 312 的有效排列 我也不想对数字中的数字进行排序 如果您指的是数字的字符 例如 1927 和 9721 则 至少 有几种方法 如果允许排序 一种方法是简单地sprintf将它们放入两个缓冲
  • 如何使 Windows 窗体的关闭按钮不关闭窗体但使其不可见?

    该表单有一个 NotifyIcon 对象 当用户单击 关闭 按钮时 我希望表单不关闭而是变得不可见 然后 如果用户想再次查看该表单 可以双击系统托盘中的图标 如果用户想关闭表单 可以右键单击该图标并选择 关闭 有人可以告诉我如何使关闭按钮不
  • C++ 子字符串返回错误结果

    我有这个字符串 std string date 20121020 我正在做 std cout lt lt Date lt lt date lt lt n std cout lt lt Year lt lt date substr 0 4 l
  • 如何忽略“有符号和无符号整数表达式之间的比较”?

    谁能告诉我必须使用哪个标志才能使 gcc 忽略 有符号和无符号整数表达式之间的比较 警告消息 gcc Wno sign compare 但你确实应该修复它警告你的比较
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • C#:如何防止主窗体过早显示

    在我的 main 方法中 我像往常一样启动主窗体 Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • 指针减法混乱

    当我们从另一个指针中减去一个指针时 差值不等于它们相距多少字节 而是等于它们相距多少个整数 如果指向整数 为什么这样 这个想法是你指向内存块 06 07 08 09 10 11 mem 18 24 17 53 7 14 data 如果你有i
  • Github Action 在运行可执行文件时卡住

    我正在尝试设置运行google tests on a C repository using Github Actions正在运行的Windows Latest 构建过程完成 但是当运行测试时 它被卡住并且不执行从生成的可执行文件Visual
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • 如何让Gtk+窗口背景透明?

    我想让 Gtk 窗口的背景透明 以便只有窗口中的小部件可见 我找到了一些教程 http mikehearn wordpress com 2006 03 26 gtk windows with alpha channels https web
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • 如何使用 std::string 将所有出现的一个字符替换为两个字符?

    有没有一种简单的方法来替换所有出现的 in a std string with 转义 a 中的所有斜杠std string 完成此操作的最简单方法可能是boost字符串算法库 http www boost org doc libs 1 46
  • ASP.NET MVC 6 (ASP.NET 5) 中的 Application_PreSendRequestHeaders 和 Application_BeginRequest

    如何在 ASP NET 5 MVC6 中使用这些方法 在 MVC5 中 我在 Global asax 中使用了它 现在呢 也许是入门班 protected void Application PreSendRequestHeaders obj

随机推荐

  • 将特殊字符串转换为H2中的日期

    Oracle 有一个 SQL 函数to date 26 Jul 2016 05 15 58 AM DD Mon YYYY HH MI SS AM 并且它在 H2 中抛出异常 非法模式字符 o 我该如何更改它才能使其在 H2 中工作 等效函数
  • 在本机反应中打开联系人应用程序

    我正在制作一个反应本机应用程序 在一个屏幕上有一个表单 用户必须在其中填写用户必须填写他的手机号码的表单 因此我正在制作一个按钮 该按钮将打开用户手机的联系人应用程序 用户可以从该列表中选择联系人号码 该号码将被填充到该字段中 我找到了这个
  • 在 Wagtail 中实现文章和页面模型之间的一对多

    我正在尝试设置一个带有文章到页面结构的 Wagtail 网站 但我很挣扎 例如 一篇评论文章可能有一个介绍页面 一个基准页面和一个结论页面 我想弄清楚如何在 wagtail 中允许这种关系并拥有它 以便编辑可以将多个页面添加到同一页面上的同
  • 为什么每次新编辑或输入内容时,我的 JupyterLab 单元格都会变成橙色?

    我最近在我经常工作的 conda 环境中的 anaconda 扩展中通过 jupyterlab scheduler 安装了 Cron 这是为了安排我的 jupyterlab 笔记本 然而 该应用程序出现了问题 所以我将其删除 尽管它似乎保留
  • Crashlytics/Firebase 中的搜索选项可以在其中按崩溃名称进行搜索?

    Crashlytics Firebase 中是否有搜索选项 我可以在其中按崩溃名称进行搜索 例如 java lang IllegalStateException 预期为 BEGIN ARRAY 但在第 1 行第 3 列为 STRING 现在
  • Javascript 拼接在 jQuery .each() 上中断?

    var results one two one hundred three var removal each results function i removal push i if results i indexOf one 1 cons
  • C++:与通用 const 指针作斗争

    我在一些模板化代码中遇到了一些关于 const 正确性的恼人问题 这些问题最终归结为以下观察结果 由于某种原因 给定一个类似 STL 的容器类型 T const typename T pointer实际上似乎并没有产生常量指针类型 即使T
  • 如何强制 FileSystemWatcher 等待文件下载?

    我正在下载一个文件 并且只想在下载完成后才执行安装 我该如何实现这个目标 似乎 FileSystemWatcher onCreate 事件会执行此操作 但这发生在不同的线程中 是否有一种简单的方法可以强制等待部分发生在同一线程中 到目前为止
  • python中的Timeit模块无法正确运行

    我正在尝试使用 python 的 timeit 模块 似乎 timeit 源代码中存在错误 尽管这似乎不正确 这是正在运行的代码片段 def recordCuckoo amtElements loadFactor Determines th
  • IEEE 754:为什么谓词 == 和 != 没有发出信号?

    注意 了解IEEE 754 请耐心等待 IEEE 754 2008 表 5 2 列出了五个无序信号谓词及其否定 当关系无序时 它们会导致无效操作异常 该无效操作异常可以防止使用以下代码编写的程序中出现意外的安静 NaN 标准谓词 gt 及其
  • MongoDB Atlas 和适用于 AWS 的 MongoDB Atlas 有什么区别

    在调查物联网数据存储的兼容数据库期间 我研究了 MongoDB 发现定价有点令人困惑 只是想知道有什么区别MongoDB 阿特拉斯 https www mongodb com cloud atlas pricing and 适用于 AWS
  • 提供大型 CSS 文件

    我有一个大约 50k 的大型压缩 CSS 文件 大约有 30 个页面引用了该文件 将 CSS 分离到一个基本文件中 每个页面都有单独的 CSS 文件会显着减少加载时间 还是提供一个大文件实际上是相同的 谢谢 我不完全确定你的意思 但是提供一
  • iOS 中的裁剪区域与选定区域不同?

    这是github上的链接https github com spennyf cropVid tree master https github com spennyf cropVid tree master您自己尝试一下 看看我在说什么 测试需
  • 连续改变 UISlider 拇指图像上 UILabel 的值

    我有一个UISlider 最少 1 个 最多 10 个 我希望它的拇指有一个UILabel放置在它的顶部 在移动时不断更新和更改其文本UISlider的拇指 所以 我从UISlider并添加了一个UILabel但一旦拇指移动 标签似乎会覆盖
  • Cuda C++ 设备代码中没有元组吗?

    global void addKernel int c const int a const int b int i threadIdx x auto lamb int x return x 1 Works auto t std make t
  • Keras 中 Conv1d 中的 input_shape 变量如何工作?

    再见 我正在 Keras 上使用 CNN 1d 但我在输入形状变量方面遇到了很多麻烦 我有一个包含 100 个时间步长和 5 个带有布尔标签的特征的时间序列 我想训练一个使用长度为 10 的滑动窗口的 CNN 1d 这是我编写的非常简单的代
  • 如何将按组绘图元素叠加到 ggplot2 方面?

    我的问题与分面有关 在下面的示例代码中 我查看了一些分面散点图 然后尝试在每个方面覆盖信息 在本例中为平均线 tl dr 版本是我的尝试失败了 要么我添加的平均线计算所有数据 不尊重方面变量 要么我尝试编写一个公式 但 R 抛出错误 然后是
  • 传递带有自定义数据属性的函数

    是否可以传递具有自定义数据属性的函数 这不起作用 div div function hello console log hello 当我获得该属性时 它是一个值为 hello 的字符串而不是函数 怎么解决这个问题呢 你可以这样做 div d
  • 是否可以在 git-extensions 中为特定文件扩展名设置 diff/merge-tool ?

    我刚刚开始使用 LabView 进行开发 这对我来说是全新的 我想使用 git 扩展来处理我的版本控制 由于源位于 vi格式 我无法使用普通的 diff 工具 源是二进制的 幸运的是 LabView 附带了专用的差异和合并工具 这似乎非常有
  • 关于真实的表示可以假设什么?

    该程序返回0在我的机器上 include