*&++i 是否会导致 C++03 中的未定义行为?

2024-02-23

In 另一个答案 https://stackoverflow.com/a/17400329/1505939据说在 C++11 之前,其中i is an int,然后使用表达式:

*&++i

导致未定义的行为。这是真的?

关于另一个答案,评论中有一些讨论,但似乎没有说服力。


问是否没有意义*&++i本身就有IN。取消引用不一定访问存储的值(先前的或新的)i,正如您通过使用它作为引用的初始值设定项表达式所看到的。仅当涉及右值转换(在这种情况下使用)时才存在任何需要讨论的问题。然后,由于我们可以使用++i,我们可以使用的值*&++i与完全相同的警告++i.

原来的问题本质上涉及i = ++i,这与i = *&++i。这是 C++03 中未定义的行为,因为i在序列点之间被修改两次,并且在 C++11 中定义良好,这是由于在左侧和右侧的值计算之后进行排序的赋值运算符的副作用。

也许值得注意的是,非规范性examples在 C++98 和 C++03 标准中,这些错误将某些正式未定义行为描述为仅仅是未指定的行为。因此,一直以来,其意图并不完全明确。一个好的经验法则是,不要依赖语言中这种晦涩的极端情况,而是要避免它们:人们不需要成为一名语言律师才能理解代码……

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

*&++i 是否会导致 C++03 中的未定义行为? 的相关文章

随机推荐

  • 如何使用图像和标签制作自定义 UIBarButtonItem?

    我想制作一个包含图像和文本的自定义 UIBarButtonItem 如下所示 我尝试子类化 UIBarButtonItem 并重写此方法 UIView customView if self storedView UIView temp UI
  • TreeMap 中的重复键[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有下面的树图代码 我在其中存储重复的密钥 它似乎覆盖了现有的密钥 TreeMap
  • 使用 JavaScript 更改 SharePoint 列表的权限

    我有一个创建列表的应用程序 我希望应用程序也将列表权限设置为仅允许管理员对列表进行更改 我知道如何隐藏列表 但我知道这不会阻止聪明的用户输入列表的 URL 并进行修改 我没有看到使用 JavaScript 更改列表权限的方法 我可以使用的列
  • 如何在 Silverlight 应用程序中显示容器的 Azure blob 列表?

    如何在 Silverlight 应用程序中显示容器的 Azure blob 列表 我知道如何在常规 Net 中执行此操作 但我需要它在银光中 我可以上传 但我想要显示已上传内容的列表 对于 Silverlight 来说是这样的 CloudS
  • 如何修复 SVN 导入行结尾错误?

    我必须导入一个巨大的 SVN 存储库 并将其从一台服务器传输到另一台服务器 所以我从旧服务器导出它 svnadmin dump gt archive svn 并将其导入新的 svnadmin load lt archive svn 在导入过
  • 多态模式匹配导致类型不明确

    灵感来自无法匹配具有约束的多态元组 https stackoverflow com questions 57137421 cannot match on polymorphic tuples with constraints 并基于随后的c
  • AppFabric 1.0错误服务器集合不能为空

    当我运行简单的程序时 出现以下错误Windows Server 应用程序结构 1 0演示控制台应用程序 ErrorCode
  • Marshmallow 上本机 WebView 中的 Instagram 链接

    最近我注意到当你尝试调用时会出现一个非常奇怪的错误https www instragram com https www instagram com 当您的智能手机运行时在网络视图中安卓 6 棉花糖 问题是 屏幕始终保持空白 只有中间那个小
  • 在 Wagtail 中创建可重用字段集的方法?

    我正在评估 Wagtail 看看是否能在我的公司中找到它与 Wordpress 和 Drupal 一起的位置 到目前为止 我认为它很有趣并且非常喜欢其中的很多内容 但是有一件事我真的很喜欢 但找不到方法来实现 我的商店使用模式库 原子设计
  • 在 Virtual Box 中调试来宾操作系统的工具

    我只是交叉发布了我在 virtualbox org 上提出的相同问题 如果不违反任何规则 我很乐意了解更多相关信息 因为 stackoverflow 承诺会更加动态 你好 我做了一些搜索 但找不到任何工具可以从虚拟盒中的早期启动中调试来宾系
  • 有没有办法向 ADO.NET 实体框架中的关联添加额外的字段?

    我希望能够对多对多关系进行建模 其中包含有关该关系的额外详细信息 例如 Person int id String name Project int id String name ProjectPerson Person id Project
  • 使用 .NET 的稳定 RSS 阅读器

    我一直在寻找一个稳定的 NET RSS Atom 库 最好是开源的 比如 Adob e 创建的 AS3 Syndicate Library 我想在我的基于 NET 的网站中集成 RSS 源 另外 是否有适用于同一个 RSS 提要阅读器的 J
  • 如何在 Gradle 中查找/删除未使用的依赖项

    我想在我的项目中找到未使用的依赖项 Gradle 中有类似 Maven 的功能吗 Kotlin 用户更新 2021 年 12 月 17 日 检测 Kotlin 项目中缺失或多余的构建依赖项 版本 1 0 9 最新 我为 Kotlin 用户添
  • .NET WinForms 中与 Qt 的表单布局最接近的等效项是什么?

    与 Qt 最接近的等效项是什么QFormLayout在 NET WinForms 中 TableLayoutPanel 将由我决定
  • WooCommerce:删除产品写入面板选项卡

    我正在使用 WooCommerce 我想隐藏后端的 链接产品 选项卡 我找到了一个添加选项卡的钩子 woocommerce product write panel tabs 但我不确定是否也可以用这个钩子隐藏某些选项卡 谢谢你的帮助 所以我
  • RestSharp.NetCore 中的 ExecuteAsyncPost 示例

    我正在使用 RestSharp NetCore 包 并且需要调用 ExecuteAsyncPost 方法 我正在努力理解回调参数 var client new RestClient url request AddParameter appl
  • 代表们——他们到底是什么?

    有人能用一些现实生活流程的类比来解释它们吗 比如经营一支棒球队 一家咖啡店或一家汽车修理店 任何有意义的事情 就像我们甚至不要谈论代码 语法或编程 我看过很多这样的帖子 但没有一个真正适合我 我们可以先谈谈概念吗 就像我什至不明白为什么我们
  • Java do-while 循环不起作用

    我希望我的程序不断询问问题 直到它得到可以使用的响应 特别是从 0 到 20 的数字 我在这个类上还有很多其他内容 所以这里有一个小摘录 其中 do while 是 我已经为所有变量命名了 public static void main S
  • 如何在 iPhone 中检测来自麦克风而不是语音的打击?

    我正在使用此代码来检测打击 但我受不了打击 我有声音 NSURL url NSURL fileURLWithPath dev null NSDictionary settings NSDictionary dictionaryWithObj
  • *&++i 是否会导致 C++03 中的未定义行为?

    In 另一个答案 https stackoverflow com a 17400329 1505939据说在 C 11 之前 其中i is an int 然后使用表达式 i 导致未定义的行为 这是真的 关于另一个答案 评论中有一些讨论 但似