|= 运算符在 C++ 中意味着什么?

2024-02-08

|= 运算符在 C++ 中意味着什么?


假设您在整数上使用内置运算符,或在用户定义的类上使用合理重载的运算符,则这些运算符是相同的:

a = a | b;
a |= b;

The '|=' 符号是按位或赋值运算符。它计算右侧(“b”)与左侧(“a”)的“或”值,并将结果分配给“a”,但在执行此操作时仅计算“a”一次。

“|=”运算符的一大优点是当“a”本身是一个复杂表达式时:

something[i].array[j]->bitfield |= 23;

vs:

something[i].array[i]->bitfield = something[i].array[j]->bitfield | 23;

这种差异是有意为之还是偶然?

...

答案:故意的 - 以显示简写表达式的优势...第一个复杂表达式实际上相当于:

something[i].array[j]->bitfield = something[i].array[j]->bitfield | 23;

类似的注释适用于所有复合赋值运算符:

+= -= *= /= %=
&= |= ^=
<<= >>=

任何复合运算符表达式:

a XX= b

相当于:

a = (a) XX (b);

除了那个a仅评估一次。请注意此处的括号 - 它显示了分组的工作原理。

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

|= 运算符在 C++ 中意味着什么? 的相关文章

随机推荐

  • Keycloak 实现重置密码流程与忘记密码流程相同

    我遇到了 Keycloak 的问题 当用户单击 忘记密码 按钮时 系统会要求他输入基本详细信息 输入详细信息后 用户会收到一封包含更改密码链接的邮件 用户更改密码 并被重定向到应用程序的登录页面 用户帐户被锁定 管理员使用应用程序解锁帐户
  • 传递哈希值而不是方法参数[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我发现在 Ruby 以及一般来说动态类型语言 中 一种非常常见的做法是传递哈希值 而不是声明具体的方法参数 例如 不要声明带有参数的方法并像这样
  • 合并将一个发布商变成另一个发布商

    我使用 OAuth 框架 它异步创建经过身份验证的请求 如下所示 OAuthSession current makeAuthenticatedRequest request myURLRequest result Result
  • 将带有空值的 csv 文件导入 phpmyadmin

    当我将 csv 文件导入 MySQL phpmyadmin 时 对于文件中未指定但默认值为 null 的所有整数值 会出现一条错误消息 1366 Incorrect integer value for column id at row 1
  • 如果删除的单元仍在其他单元中使用,那么如果我清理我的使用条款,会有什么不同吗?

    就我个人而言 我喜欢它 如果我的uses子句尽可能小 但在许多应用程序中 真正大的单元 就膨胀的可执行文件而言 就像Forms or VirtualTrees无论如何 至少另一个单位需要 所以 如果我清洁我的身体 会有什么不同吗 uses即
  • 在 R 中添加带有颜色和范围的图例

    以下示例代码根据以下值生成彩色点图a a lt sample 1 100 rbPal lt colorRampPalette c red blue b lt rbPal 10 as numeric cut a breaks 10 plot
  • python 的startswith 是如何工作的?

    我无法理解该行为str startswith https docs python org 3 library stdtypes html str startswith method 如果我执行 hello startswith 它返回 Tr
  • 线程会提高性能吗?

    我有一个这样设置的程序 它是一个 Net Framework 4 控制台应用程序 该程序用于从每台服务器上的每个日志文件 上周 收集 sc 字节和 cs 字节 该程序已完成 但运行时间很长 foreach string server in
  • 在 Rails 3 中编写自定义验证器

    我正在尝试编写一个自定义验证器来检查输入到文本字段中的单词数 我试图效仿 Railscasts 第 211 集中的例子 http railscasts com episodes 211 validations in rails 3 http
  • CSS margin 和 padding 简写属性的顺序助记符

    我永远记不起在一个声明中设置边距或填充的速记属性的顺序 那是 margin top 2px margin bottom 4px margin left 3px margin right 8px 可以写成 margin 2px 8px 4px
  • 如何在OpenCV中将某个RGB值的所有像素替换为另一个RGB值

    我需要能够用 OpenCV 中的另一种颜色替换具有特定 RGB 值的所有像素 我尝试了一些解决方案 但没有一个对我有用 实现这一目标的最佳方法是什么 太长了 使用 Numpy 将所有绿色像素设为白色 import numpy as np p
  • FXCop 自定义规则未显示在规则集中

    我按照此处的步骤创建了一个新的自定义规则并将其添加到 VSStudio 2013 中的规则集中 http blog tatham oddie com au 2010 01 06 custom code analysis rules in v
  • 在 Word 选项加载项对话框中设置发布者

    我使用 Visual Studio 2010 RTM 为 Microsoft Word 2010 Beta 制作了一个插件 当我查看 查看和管理 Microsoft Office 加载项 时 发布者显示为 无 使用软件发布者证书进行代码签名
  • jquery更改事件回调

    如何在之后调用函数一次change 活动完成了吗 例如 像这样 我知道 jQuery 默认没有回调方法 element change function do something on change milestonesSelect mult
  • 你能结合 docker 的单独构建吗?

    我正在使用circleci来部署应用程序 我部署到amd和arm架构 所以我的构建是多架构的 我一直在使用docker buildx 借助 Circleci 的新手臂支持 我能够将这个过程的时间从使用 quemu 的有时 3 小时缩短到大约
  • SQL Server 版本控制与 git 集成?

    我有一个 ERP 系统 由我的团队负责维护 然而最近我们似乎忘记了谁在改变什么 我们需要一个解决方案来控制这些变化 我们正在研究 GIT 的企业版 因为我们所有的软件开发和 Web 开发都可以与它完美配合 更不用说我已经有一些 GIT 经验
  • 获取所有 css 样式属性的访问权限?

    我想通过 JavaScript 访问所有 CSS 属性 不仅针对特定选择器或元素 而且针对所有属性 我想遍历所有属性 style收藏 我怎样才能做到这一点 您可以使用CSSStyleDeclaration object CSSStyleDe
  • Floyd Warshall 使用邻接表

    是否可以使用邻接表对 Floyd Warshall 进行编码 我必须处理文本文件中的一百万个顶点 因此邻接矩阵不是解决方案 已有可用的实施吗 请帮忙 您不能将 Floyd Warshall 与邻接列表一起使用 因为当它工作时 它会产生新的边
  • 为什么我的数据库没有更新?

    我的问题是 当我编辑数据网格中的单元格时 数据库没有更新 我使用的代码如下 Public Class Form9 Inherits System Windows Forms Form Dim sql As String SELECT FRO
  • |= 运算符在 C++ 中意味着什么?

    运算符在 C 中意味着什么 假设您在整数上使用内置运算符 或在用户定义的类上使用合理重载的运算符 则这些运算符是相同的 a a b a b The 符号是按位或赋值运算符 它计算右侧 b 与左侧 a 的 或 值 并将结果分配给 a 但在执行