(bool) 可靠地转换为 0 或 1 吗? [复制]

2024-02-28

来自一些reading https://stackoverflow.com/questions/6627178/c99-why-are-false-and-true-defined-as-0-and-1-and-not-as-bool0-and-bool on https://stackoverflow.com/questions/21421061/need-for-bool-in-c99 堆栈溢出 https://stackoverflow.com/questions/49277769/why-is-c99s-bool-a-macro-rather-than-a-typedef,我推测bool,如定义stdbool.h, 是一个扩展为内置类型的宏_Bool, 然后true定义为1 and false定义为0.

正在投射到bool保证返回值为0 or 1?可能是_Bool变量(包括强制转换右值)曾经获得过 0 或 1 以外的值吗?

下面的代码意味着_Bool变量,包括强制转换右值,只会有以下值0 or 1,但我想确认这是有保证的,并且我没有观察特定于目标或编译器版本的行为。

(FWIW,我最感兴趣的是确认只有NULL, 投射到_Bool, 将0,以及所有其他可能的指针值,转换为_Bool, 将1)

$ cat ./main.c
#include <stdio.h>
#include <stdbool.h>

int main( int argc, char* argv )
{
  int   i;
  int*  p = &i;
  int*  n = NULL;

  printf( "%zu\n", sizeof( (bool)p ) );
  printf( "%p - %d\n", p, (bool)p );
  printf( "%p - %d\n", n, (bool)n );
  printf( "%d\n", (bool)3 );

  return 0;
}
$ gcc --version
gcc (GCC) 8.2.1 20181215 (Red Hat 8.2.1-6)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ gcc -g ./main.c && ./a.out    
1
0x7ffdac3290bc - 1
(nil) - 0
1

C 2018 6.3.1.2 1 说:

当任何标量值转换为_Bool,如果值比较等于0,则结果为0;否则,结果为 1。

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

(bool) 可靠地转换为 0 或 1 吗? [复制] 的相关文章

  • 井字游戏代码有助于改进

    这是我必须检查玩家在井字棋游戏中获胜的代码 这是一个很长的 if 语句 可以改进 该板由 9 个图片框组成 我是一名 C 初学者 pBox Image Player players Player playerTurn getImage ch
  • C++,多语言/本地化支持

    向 C 程序添加多语言支持的最佳方法是什么 如果可能 应该从包含键值对 WelcomeMessage Hello s 之类的纯文本文件中读取语言 我想到了添加一个 localizedString key 函数来返回加载的语言文件的字符串 有
  • fork 和 exec 之间的区别

    两者有什么区别fork and exec 指某东西的用途fork and exec它体现了 UNIX 的精神 它提供了一种非常简单的方法来启动新进程 The fork调用基本上复制了当前进程 在almost任何方式 并非所有内容都会被复制
  • 如何在 C# 中启动文件

    编辑 我觉得自己像个白痴 我有一种感觉 像下面的答案会起作用 但没有看到任何与下面的答案类似的谷歌结果 所以当我看到这段复杂的代码时 我想它一定是这样的 我搜索并找到了这个Windows 列出并启动与扩展关联的应用程序 https stac
  • 找不到 HttpContextBase 命名空间

    public string GetCartId HttpContextBase context if context Session CartSessionKey null if string IsNullOrWhiteSpace cont
  • 子进程中的变量修改

    我正在研究科比和奥哈拉伦的作品Computer Systems A Programmer s Perspective 练习 8 16 要求程序的输出如下 我更改了它 因为他们使用了一个你可以在他们的网站上下载的头文件 include
  • 运行 C# exe 文件

    复制 为什么我的 NET 应用程序在从网络驱动器运行时会崩溃 https stackoverflow com questions 148879 why does my net application crash when run from
  • .NET Core 2 - 从启动中调用存储库方法[重复]

    这个问题在这里已经有答案了 我有以下存储库和类 public interface IValueService GetAll public class ValueService IValueService private DataContex
  • 析构函数、dispose 和 Finalize 方法之间的区别

    我正在研究垃圾收集器在 C 中的工作原理 我对使用感到困惑Destructor Dispose and Finalize方法 根据我的研究和理解 在我的类中拥有析构函数方法将告诉垃圾收集器以析构函数方法中提到的方式执行垃圾收集 该方法不能在
  • C语言中的array、&array、&array[0]有什么区别? [复制]

    这个问题在这里已经有答案了 在学习C语言中的数组和指针时 我很困惑 为什么ch ch ch 0 彼此相等 而sptr sptr sptr 0 却不相等 这是我的源代码 int main void char ch 7 1 2 3 4 5 6
  • 谷歌基准迭代的意义是什么?

    我正在使用 Google Benchmark 来测量某些代码的执行时间 例如 我编写了以下代码来测量其执行时间性能 include
  • 将数字 n 拆分为 k 个不同数字的总和

    我有一个数字 n 我必须将它分成 k 个数字 使得所有 k 个数字都是不同的 k 个数字的总和等于 n 并且 k 最大 例如 如果 n 为 9 则答案应为 1 2 6 如果 n 为 15 则答案应为 1 2 3 4 5 这就是我尝试过的 v
  • 从 TFS 下载工作项附件(文件已损坏)

    我正在尝试创建 C 代码 因此我可以自动从 Team Foundation Server 下载 BUGS 预定义查询的所有附件 该代码似乎工作得很好 但所有下载的文件都因意外原因而损坏 我无法查看它们 有人可以看一下代码并分享意见吗 非常感
  • 使用可变参数模板函数计算多个值的平均值

    我正在尝试编写一个函数来确定任意数量参数的平均值 所有参数都具有相同的类型 出于学习目的 我尝试使用可变参数模板函数来做到这一点 这是我到目前为止所拥有的 template
  • 如何将此 Boost ASIO 示例应用到我的应用程序中

    我已经阅读了很多 ASIO 示例 但我仍然对如何在我的应用程序中使用它们感到困惑 基本上 我的服务器端需要接受超过100个连接 客户端 这部分是通过使用线程池 通常每个CPU核心2 4个线程 来完成的 为简单起见 我们假设只有一个连接 为了
  • 我们可以使用 C# 录制发送到扬声器的声音吗

    我有一个软件 SoundTap Streaming Audio Recorder 它记录发送到扬声器的任何音频 无论流是来自网络还是来自某些文件或麦克风 我可以在桌面应用程序中制作这样的应用程序 以便我可以录制发送到扬声器的流 无论来源如何
  • 定义一个断言,即使定义了 NDEBUG,该断言也有效

    我想定义一个assert与标准相同的宏assert 3 http man7 org linux man pages man3 assert 3 html调用 但它不会被预处理器删除NDEBUG被定义为 这样的呼唤 让我们称之为assert2
  • “while(true) { Thread.Sleep }”的原因是什么?

    我有时会遇到以下形式的代码 while true do something Thread Sleep 1000 我想知道这是否被认为是好的做法还是坏的做法以及是否有任何替代方案 通常我在服务的主函数中 找到 这样的代码 我最近在 Windo
  • InvalidOperationException:没有为方案“CookieSettings”注册身份验证处理程序

    我正在使用 ASP Net MVC core 2 1 开发一个应用程序 其中不断出现以下异常 InvalidOperationException 没有为方案 CookieSettings 注册身份验证处理程序 注册的方案有 Identity
  • 如何使用 __m128i 执行元素左移?

    我发现 SSE 移位指令只能在所有元素上移位相同的量 mm sll epi32 mm slli epi32 这些会移动所有元素 但移动量相同 http software intel com sites products documentat

随机推荐

  • Play Framework:合并多模块项目中的多个全局对象

    我正在使用 Play 2 3 和 Java 8 构建一个多模块项目 根应用程序和每个模块都有一个全局对象 但我们如何知道 Play 仅使用根应用程序中的一个全局对象 简化的文件夹结构 root app Global java conf ap
  • SAS 中的“auto.arima”?

    我曾经使用 auto arima 在 R 中运行 arima 模型来识别适合数据的最佳 arima 模型 即使没有它 在 R 中编写一个函数来执行类似的任务也很容易 然而 我这几天google了一下 在SAS中找不到类似的过程 有谁知道SA
  • 在Python中应用PMML预测模型

    Knime 为我生成了PMML http en wikipedia org wiki Predictive Model Markup Language模型 这时候我想把这个模型应用到一个python进程中 这样做的正确方法是什么 更深入 我
  • 在应用程序浏览器中将 Instagram 转义至 Safari

    我的网站中有一个链接 可以重定向到 Instagram 登录以获取一些照片 但该页面无法在 iOS 设备上的 Instagram 应用内浏览器上运行 我的想法是放置一个链接 以便用户可以单击它并重定向到 safari 或默认浏览器中的页面
  • 有没有一种好方法可以让 Map get 和 put 忽略大小写? [复制]

    这个问题在这里已经有答案了 有没有好的方法可以有一个Map
  • 如何使用离线设备捕获地理位置 - cordova

    我正在使用 cordova 开发一个应用程序 并发现需要获取用户的纬度和经度数据 但我的应用程序将离线使用 无需互联网访问 我有两个问题 1 如何检查设备是否启用 GPS 2 如何在没有互联网连接的情况下离线获取纬度和经度 这是可能的 我会
  • 在 React 中设置单选按钮值

    我正在制作一个简单的反应应用程序 其表单具有单选按钮 这里有一个可用的默认数据 例如 const defaultData ContactMode 3 ContactMode 2 ContactMode 2 要求 gt 需要迭代这个defau
  • Tensorflow:“GraphDef 不能大于 2GB。”分配变量后保存模型时出错

    我想用一个预训练的模型来热启动另一个有一点差异的模型 简而言之 我创建一个新模型 并使用预训练的模型权重分配具有相同名称的变量 但是 在保存模型时 出现错误 Traceback most recent call last File tf t
  • Android 应用程序在发布中崩溃,但在调试 NullPointerException 中不会崩溃

    由于从我正在使用的 API 返回的数据发生了更改 我最近更改了 2 行代码作为解决方法 现在 当使用发布的 apk 和 aab 时 应用程序崩溃 但是 当我通过 API 27 上的 Android 模拟器使用该应用程序并将 API 27 设
  • 多线程中 volatile 变量的值不会改变

    我有一个在后台运行的 winform 应用程序BackgroundWorker它有一个无限循环 每小时执行一些事情 我的用户界面Form类是这样的 public partial class frmAutoScript Form privat
  • 未找到 System.Data 程序集

    我有一个参考System Data在我的Windows服务项目中 我不断得到Exception 无法加载文件或程序集 System Data Version 4 0 0 0 Culture neutral PublicKeyToken b7
  • SkipList 与 Dictionary

    我最近一直在阅读有关跳过列表的内容 我有一个 Web 应用程序 它对静态数据集执行相当复杂的 Sql 查询 我想实现一个缓存系统 生成 sql 查询的 md5 哈希值 然后返回查询的缓存数据集 如果集合中存在该数据集 哪种算法更好 字典还是
  • 如何在android中列表视图为空时显示消息

    我是 Android 方面的新手 我正在创建一个应用程序 其中包含将动态填充的列表视图 我的要求是当列表为空时 我想显示一条消息 我不想仅仅为了显示此消息而创建其他视图 有什么好的方法可以做到这一点吗 有什么建议么 ListActivity
  • 语法错误:插入“enum Identifier”,插入“EnumBody”,插入“}”

    我编写了一个枚举类型 当我运行为其创建的 JUnit 测试时 该类型会出现以下语法错误 java lang Error Unresolved compilation problems Syntax error insert enum Ide
  • 需要 python lxml 语法帮助来解析 html

    我是 python 的新手 我需要一些有关使用 lxml 查找和迭代 html 标签的语法的帮助 以下是我正在处理的用例 HTML 文件的格式相当好 但并不完美 屏幕上有多个表格 其中一个包含一组搜索结果 每个表格包含页眉和页脚 每个结果行
  • 每天第一次调用网络服务很慢

    在构建此 Web 服务和调用它的应用程序时 我们注意到每天对该 Web 服务的第一次调用非常慢 有时甚至会超时 然而 此后的每一次通话都效果很好 有人能解释一下为什么会这样以及我们如何摆脱这种痛苦吗 提前致谢 如果是 ASP NET Web
  • 更改seaborn箱线图线彩虹颜色

    I found this beautiful graph online apparently made with plotly and wanted to recreate it with seaborn 到目前为止 这是我的代码 impo
  • AngularJS 实现模板本地化

    我想实现视图的本地化 也应该包括正文 我之前通过加载 JSON 文件并通过键进行迭代来完成此操作 键是类名 比我简单地将键的值分配给 元素与类 语言文件 JSON Header Title My Title Header Text Lore
  • Jersey 2 + HK2 - @ApplicationScoped 不工作

    我有课 ApplicationScoped public class Service private Map
  • (bool) 可靠地转换为 0 或 1 吗? [复制]

    这个问题在这里已经有答案了 来自一些reading https stackoverflow com questions 6627178 c99 why are false and true defined as 0 and 1 and no