序列点和运算符优先级之间的区别? 0_o

2023-12-10

让我举一个例子:

a = ++a;

据说上面的语句有未定义的行为(我已经阅读了关于 UB on SO 的文章)

但根据优先规则运算符前缀++优先级高于赋值运算符=

so a应首先递增,然后分配回 a。那么每一个评价都是已知的,那为什么是UB呢?


这里要理解的重要一点是,运营商可以产生价值并且还可以有副作用.

例如++a产生(评估为)a + 1,但它也有增加的副作用a。同样适用于a = 5(计算结果为 5,同时设置a to 5).

所以这里有两个副作用,它们改变了a,两者都发生在序列点之间(可见的分号和上一个语句的结尾)。

由于运算符优先级,两个运算符的求值顺序是明确定义的,但这并不重要,因为处理它们的副作用的顺序仍然是未定义的。

因此,UB。

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

序列点和运算符优先级之间的区别? 0_o 的相关文章

  • 向进度条添加百分比文本 C#

    我有一个方法可以显示进程栏何时正在执行以及何时成功完成 我工作得很好 但我想添加一个百分比 如果完成 则显示 100 如果卡在某个地方 则显示更少 我在网上做了一些研究 但我无法适应我正在寻找的解决方案 这是我的代码 private voi
  • InvalidOperationException - 对象当前正在其他地方使用 - 红十字

    我有一个 C 桌面应用程序 其中我连续创建的一个线程从源 实际上是一台数码相机 获取图像并将其放在 GUI 中的面板 panel Image img 上 这必须是另一个线程 如它是控件的代码隐藏 该应用程序可以工作 但在某些机器上 我会在随
  • 在 C++ 中使用 matlab 结构(matlab 函数调用的返回值)(由 matlab 编译器生成的库)

    你好 我有一个相当简单的 matlab 函数 例如 function MYSTRUCT myfunc MYSTRUCT prop1 test MYSTRUCT prop2 foo MYSTRUCT prop3 42 end 我用 matla
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 使用 Newtonsoft 和 C# 反序列化嵌套 JSON

    我正在尝试解析来自 Rest API 的 Json 响应 我可以获得很好的响应并创建了一些类模型 我正在使用 Newtonsoft 的 Json Net 我的响应中不断收到空值 并且不确定我的模型设置是否正确或缺少某些内容 例如 我想要获取
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 获取两个工作日之间的天数差异

    这听起来很简单 但我不明白其中的意义 那么获取两次之间的天数的最简单方法是什么DayOfWeeks当第一个是起点时 如果下一个工作日较早 则应考虑在下周 The DayOfWeek 枚举 http 20 20 5B1 5D 3a 20htt
  • 为什么 Google 测试会出现段错误?

    我是 Google Test 的新手 正在尝试提供的示例 我的问题是 当我引入失败并设置GTEST BREAK ON FAILURE 1 或使用命令行选项 GTest 将出现段错误 我正在考虑这个例子 https code google c
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • 为什么 std::strstream 被弃用?

    我最近发现std strstream已被弃用 取而代之的是std stringstream 我已经有一段时间没有使用它了 但它做了我当时需要做的事情 所以很惊讶听到它的弃用 我的问题是为什么做出这个决定 有什么好处std stringstr
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • AES 128 CBC 蒙特卡罗测试

    我正在 AES 128 CBC 上执行 MCT 如中所述http csrc nist gov groups STM cavp documents aes AESAVS pdf http csrc nist gov groups STM ca
  • Cmake 链接共享库:包含库中的头文件时“没有这样的文件或目录”

    我正在学习使用 CMake 构建库 构建库的代码结构如下 include Test hpp ITest hpp interface src Test cpp ITest cpp 在 CMakeLists txt 中 我用来构建库的句子是 f
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 使用 C# 读取 Soap 消息

  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com

随机推荐

  • 菜单背景改变滚动颜色

    我想做的是 当用户到达网站的下一部分时 将菜单的背景从透明淡入浅灰色 我到处搜索脚本 并在这里尝试了多个脚本 但似乎根本不起作用 任何帮助将不胜感激 Thanks HTML
  • std:: 引用对

    拥有一个有效吗std pair参考文献 特别是 赋值运算符是否存在问题 根据这个链接 好像没有对operator 进行特殊处理 所以默认的赋值运算符将无法生成 我想要一个pair
  • 指数曲线拟合matlab

    我有以下等式 我想使用 MATLAB 对上述方程进行指数曲线拟合 其中y f u a y是我的输出 u a 是我的输入 我想求系数A B对于一组提供的数据 我知道如何通过定义状态来对简单多项式执行此操作 举个例子 如果states ones
  • 如何保存tf.data.Dataset对象?

    如上 我尝试对其进行酸洗 但出现以下错误 Maybe arr self cpu nograd numpy pylint 禁用 受保护的访问 运行时错误 Tensorflow 类型 21 无法转换为 numpy dtype tf data D
  • 在 Fortran 中调用子例程(分段错误)

    以下代码在 Linux 系统上使用 pgf90 编译时出现分段错误 而在 Windows 上使用 Intel Visual FORTRAN 时运行成功 program main implicit none integer a 3 b 3 c
  • 如何计算文档中单词与特定术语的接近度

    我正在尝试找出一种方法来计算文档中特定术语的单词接近度以及平均接近度 按单词 我知道 SO 上也有类似的问题 但没有任何东西可以给我我需要的答案 甚至没有给我指出一些有用的地方 假设我有以下文本 song lt Far over the m
  • 检测精灵之间碰撞的最佳方法?

    检测 2D 游戏精灵中的碰撞的最佳方法是什么 我目前从事 allegro 和 G 工作 有多种方法可以检测碰撞检测 根据您使用的是 2d 还是 3d 环境 您使用的方法将略有不同 还要记住 在建立碰撞检测系统时 要考虑到您可能想要在游戏中实
  • 将外部配件连接到 3.5 毫米耳机插孔时无法收到通知

    我已经尝试让它发挥作用有一段时间了 我已经完成了文档中所说的所有操作 但仍然一无所获 这是我的应用程序委托中注册本地通知的代码 void registerForLocalNotifications NSNotificationCenter
  • sqrt() 函数链接错误

    以下代码在 Linux 上引发未定义符号错误 cat rms c sqrt example include
  • 请求所有文件时如何避免读取超时? (谷歌驱动器API)

    我有一个驱动器应用程序 它请求所有未删除的文件 但有时会抛出读取超时的IO异常 有办法避免这种情况吗 这是我得到的错误 发生错误 java net SocketTimeoutException 读取超时 也许我的指数退避实施错误 这是我用来
  • 将控制台输出绑定到 RichEdit

    这是非常简单的问题 我有一个带有大量 Console Writeline 代码的 c dll 并且希望能够使用此 dll 在表单应用程序中查看该输出 是否有一种相对简单的方法将控制台输出绑定到 RichEdit 或其他合适的控件 或者 我可
  • 使用 Spring Cloud Data Flow 2.0.1 时出现 Oracle 11.2 Unsupported 错误

    我正在尝试设置 SCDF 2 x Spring Cloud Data Flow 服务器 以注册 Spring Boot 应用程序 例如任务类型 以利用开箱即用的管理和其他功能 在设置 SCDF 2 x 时 尝试连接到新的 dataflow
  • 使用.NET框架读取串口的正确方法是什么?

    我在这里阅读了很多有关如何使用 NET SerialPort 类从串行端口读取数据的问题 但没有一个推荐的方法对我来说完全有效 这是我现在使用的代码 SerialPort port new SerialPort COM1 port Data
  • 如何在PHP中将英语日期格式转换为德语日期格式

    嗨 我有这样的日期格式 英文格式 15 July 2011 我想将其转换为德语格式 如下所示 15 Juli 2011 如何将日期格式从一种语言转换为另一种语言格式 我的代码是 date 15 July 2011 newLocale set
  • 在 Python TkInter 中更新标签文本

    有没有可能的方法来创建使用字符串和变量作为文本的 TkInter 标签 例如 name bob Label root text hello my name is name 但不是仅在创建标签时将标签文本设置为上述内容 而是在 名称 更改时更
  • 如何在UIWebView中使用Apple(应用内购买)?

    有没有什么方法可以从应用程序内的 UIWebView 使用 Apple In App 购买 因为我想使用网络视图加载外部网站并在应用程序购买中使用作为应用程序内的付款方式 您可以从 UIWebView 调用 Objective C 方法 您
  • ECMAScript/JavaScript 字符串中的每个字符消耗多少 RAM?

    问题非常简单 ECMAScript JavaScript 字符串中的每个字符消耗多少 RAM 以字节为单位 我会猜测两个字节 因为标准说它们存储为 16 位无符号整数 这是否意味着每个字符始终是两个字节 是的 我相信情况确实如此 这些字符可
  • SQL中根据日期计算列数

    我需要有关 SQL 语句的帮助 目标是统计每个日期的警报数量 我的桌子看起来像这样 DATE COUNTER ALARM ID 2012 01 01 30 1 2012 01 01 20 2 2012 01 01 10 3 2012 01
  • 如何解决ASEC_CREATE权限问题?

    我无法再在手机中部署我的项目 我不知道是因为我更新了Gradle还是更新了我的手机系统 或者两者兼而有之 错误信息是这样的 Error installing split apks com android ddmlib InstallExce
  • 序列点和运算符优先级之间的区别? 0_o

    让我举一个例子 a a 据说上面的语句有未定义的行为 我已经阅读了关于 UB on SO 的文章 但根据优先规则运算符前缀 优先级高于赋值运算符 so a应首先递增 然后分配回 a 那么每一个评价都是已知的 那为什么是UB呢 这里要理解的重