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

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(使用前将#替换为@)

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

  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使

随机推荐

  • 将特殊字符串转换为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