对布尔值使用按位非运算符 (~) 是否会引发未定义行为?

2024-04-22

如果 C++ 程序将按位非运算符 (~) 应用于布尔值,是否会调用未定义行为?

例如。以下程序定义明确吗?

bool f = false;
bool f2 = ~f;    // is f2 guaranteed to be true, or is this UB?
bool t = true;
bool t2 = ~t;    // is t2 guaranteed to be false, or is this UB?

(是的,我知道有一个 ! 运算符更适合这类事情;出于这个问题的目的,我们将忽略它的存在;))


5.3.1/10的操作数为~应具有整数或无范围枚举类型;结果是其操作数的反码。进行积分促销。[强调我的]

4.5/6类型的纯右值bool可以转换为类型的纯右值int, with false变为零并且true成为一体。

4.5/7这些转换称为积分促销.

So ~false is an int具有由全 1 组成的位模式 - 代表 0 的位模式的补码,即全零(根据要求3.9.1/7。) 相似地,~true is an int这是 1 的位表示的补码 - 即所有最低有效位为零。这两个值都将计算为true在布尔上下文中。

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

对布尔值使用按位非运算符 (~) 是否会引发未定义行为? 的相关文章

随机推荐

  • 从节点树中获取总和

    我正在学习php 我有这个结构 company 1 10 all 50 company 1 1 10 all 20 company 1 1 1 10 all 10 company 1 2 20 all 20 每家公司可能有多个子公司 也可能
  • 切换div的可见性属性

    我的 div 中有一个 HTML 5 视频 然后我有一个自定义播放按钮 效果很好 我将视频的可见性设置为加载时隐藏 单击播放按钮时可见 再次单击播放按钮时如何将其恢复为隐藏 function showVid document getElem
  • 使用 linq 将数据集列表

    我有一个DataSet我想转换DataSet into List
  • 云函数在运行所有代码之前结束

    我正在尝试创建一个云函数 但它在 firebase 日志中 在执行所有任务之前显示 已完成 这是我的代码 export const count functions pubsub schedule 0 8 timeZone Europe Br
  • Node.js 中的 git 命令

    我想知道是否有人知道 进入 npm 包来使用 git 命令 我有一个nodejs项目 我想执行以下命令 克隆 git 创建分支 git pull request 来自创建的分支 我尝试了一些 npm 包但没有成功 任何帮助将不胜感激 谢谢
  • Pytest - 测试解析器错误:无法识别的参数

    我正在尝试测试一个非常简单的函数 由于多次尝试测试使用参数解析器作为参数的更复杂的函数而失败 来自 runfile py import argparse import os def get input args parser argpars
  • 扩展无法启用或安装的问题

    php 7 3 5 你好 我的扩展 ext http 有问题 composer 说我缺少 ext http 即使我在composer json 中写了这个 为什么 这就是这个确切的消息 问题1 您的系统中缺少请求的 PHP 扩展 ext h
  • 如何将 中的项目向右对齐

    我如何将下面的所有内容对齐到最右侧 div div
  • 在没有 DBCC INPUTBUFFER 的情况下获取 SQL Server 中的最后一个命令

    有没有办法在不使用的情况下获取最后执行的 SQL Server 命令DBCC INPUTBUFFER 例如 是否有包含此信息的系统视图或目录 Thanks 您可以将 SPID SQL 进程 ID 传递给以下内容 DECLARE sql ha
  • 字符串比较。如何将字符串与 std::wstring 进行比较? WRT STRCMP

    我试图比较两种我期望在某种程度上兼容的格式 因为它们通常都是字符串 我尝试使用字符串和 std wstring 执行 strcmp 并且我确信 C 专家知道 这根本无法编译 是否可以比较这两种类型 这里有简单的转换吗 你需要转换你的char
  • java:使用扫描仪类读取文本文件并将信息存储在数组中

    我有一个包含学生成绩的文本文件 例如 Kim 40 45 Jack 35 40 我试图从文本文件中读取这些数据 并使用扫描仪类将信息存储到数组列表中 任何人都可以指导我正确编写代码吗 Code import java io import j
  • Laravel 门面有依赖性吗?

    我读到 一个类不应该有太多的依赖关系 在一本书中 它指出 4 个依赖项可能表明类可能做了太多事情 假设我编写了一个使用 10 个依赖项的类 6 个类和 4 个外观 我应该只关心这 6 个类并将它们分开 还是也关心 4 个外观 如果有人想知道
  • 为什么 Jing 不允许在 id 属性中使用冒号(“:”)?

    我一直在努力反对 xsd ID 不允许在 id 属性中使用冒号 我第一次注意到这一点是在 Emacs 中使用 James Clark 的 nxml mode 时 因为它验证了我正在使用的 XHTML 文件 然后 我使用 Jing 针对 RN
  • Jquery Ajax - Tumblr API v2

    我试图深入了解 Tumblr 的黑暗世界 但无法理解如何克服以下错误 Uncaught SyntaxError Unexpected token 我相信这可能是因为我正在返回 json 但尝试使用 jsonp 这是我要发送的内容 funct
  • 互联网上的 UDP 多播?

    我不确定如何最好地解决我的问题 我有一个在远程计算机上运行的服务 用于接收和处理 UDP 数据包 我希望该服务能够将这些数据包重新发送给任何需要它们的人 可能是任何人 通常是一台机器 但也可能更多 我认为 UDP 多播将是理想的 该服务可以
  • 为什么我不能在 C# 中编写从基类到派生类的隐式运算符?

    public class Derived BaseClass public Derived string name base name public static implicit operator BaseClass Derived de
  • 如何使用 Java 从 MongoDB 读取日期(时间戳)

    我正在尝试以以下格式从 MongoDB 读取日期字段 Formate YYYY MM dd HH mm ss SSSSSS 2017 01 23 10 46 07 812000 DB2 2017 01 23T16 46 07 812Z St
  • 在 matplotlib (Python) 中使用 mplstyle 时出现错误键“axes.prop_cycle”

    当我尝试使用本地加载的外部样式表时 出现以下错误 Bad key axes prop cycle on line 270 in idt mplstyle You probably need to get an updated matplot
  • 数据模板中的数据绑定不起作用

    我有 UserControl 对多个演示文稿进行过滤 而该演示文稿又具有 ContentControl 内容是各个演示文稿之间有所不同的单独过滤控件 该方案在视觉上按预期工作 但数据绑定却不然 输出中没有数据绑定错误 DataContext
  • 对布尔值使用按位非运算符 (~) 是否会引发未定义行为?

    如果 C 程序将按位非运算符 应用于布尔值 是否会调用未定义行为 例如 以下程序定义明确吗 bool f false bool f2 f is f2 guaranteed to be true or is this UB bool t tr