当 f & g 修改同一个全局变量时,表达式 f() > g() 的值是否未定义或未指定?

2024-06-03

UPDATE:由用户标记ecatmur,它是重复的在 C99 中,f()+g() 是未定义还是只是未指定? https://stackoverflow.com/questions/3951017/in-c99-is-fg-undefined-or-merely-unspecified(虽然问题问的是C99,但C++的答案没有变化)。答案是:未指定(对于两种情况)。


考虑以下 C++14 代码片段:

int i = 0;
int x() { i++; return i;}
int y() { i++; return i;}
bool z = (x() > y());  // unspecified or undefined ?

的值是z merely未指定,或者这是未定义的行为?

根据我的理解(如果我错了,请纠正),这样的表达:i++ > i++将是未定义的行为,因为我们在一对序列点之间对同一变量进行两次变异,但是上面的情况又如何(其中变异发生在单独的函数中)?

那么这个呢:

bool z = (x() > i++);  // undefined or unspecified now ?

在这两种情况下,值都是未指定的,但行为是明确定义的。函数调用相对于调用它们的表达式中的其他计算而言是不确定的顺序,如 [intro.execution] 1.9/15 中指定的:

调用函数(包括其他函数调用)中的每个计算,如果在被调用函数体执行之前或之后没有以其他方式专门排序,则相对于被调用函数的执行不确定地排序

所以所有访问i是有序的,给出了明确定义的行为,但序列是不确定的,给出了未指定的值。

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

当 f & g 修改同一个全局变量时,表达式 f() > g() 的值是否未定义或未指定? 的相关文章

随机推荐

  • 从类外部调用某些异步方法时出现异常

    假设我有一个名为 x 和 y 的类 如下所示 class x public x p private async p await q private async p some logic is there 在 test aspx cs 文件中
  • 从对象获取数据 - 我看到数据但无法保存它们

    正如你所看到的 我是新来的 我确实尝试过搜索 但没有找到解决我问题的方法 所以这是我的问题 如果我这样做 console log grid data kendoGrid data 这在控制台中显示如下 所以我明白这一点 有一个数组和一个带有
  • 为什么 tf.matmul() 给出看似不一致的结果?

    sess tf InteractiveSession num elements 10 output 0 76158798 num elements softmax w 0 1 0 1 0 1 0 1 0 1 0 1 0 1 num elem
  • 使 Camel 路线并行运行

    我有一个应用程序使用骆驼路线执行一些基本的 ETL 每个路由都配置为从一个表中获取一些数据进行一些转换 并将其安全地保存到不同模式的同一个表中 所以骆驼路线和表之间存在一对一的关系 假设我有这两条路线 from direct table 1
  • 无法提取 Typescript 中的对象值

    我一直在尝试将 JavaScript Web 表单转换为 Typescript 但无法弄清楚如何处理以下内容 在 JavaScript 中有效 let fieldValues JSON parse cookieData let keys O
  • 为什么这个 oracle 批量插入不起作用?

    我正在尝试将一些数据批量插入到 oracle 数据库中 我按照文档中的示例进行操作 this DataBaseAccess new OracleConnection connString var dataAdapter new Oracle
  • Maven依赖关系无法解决

    我在用着阿帕奇Maven3两三天以来 一些依赖关系无法再解决 这首先没有问题 更具体地说 它是 maven findbgs plugin plugin 1 3 1 maven cobertura plugin plugin 1 3 它们不应
  • 将超链接添加到 PDF 文档中

    我目前正在扩展我们的自定义 PDF 编写器 以便能够编写网站链接 但是 我遇到了一个问题 因为我无法找到如何将链接放入 PDF 的任何地方 这是打印文本的内容 BT 70 50 TD F1 12 Tf visit my website Tj
  • SeekBar 未设置实际进度。 SetProgress() 不适用于早期的 Android 版本 [重复]

    这个问题在这里已经有答案了 我有一个应用程序 我想根据从 Web 服务检索到的值设置特定 SeekBar 的进度 但是 当我使用 SetProgress int 时 只有 SeekBar 的 搜索者 被设置 该栏未按预期 填充 它看起来是这
  • 我什么时候应该使用内联和外部 Javascript?

    我想知道什么时候应该包含外部脚本或将它们与 html 代码内联编写 就性能和易于维护而言 这方面的一般做法是什么 真实场景 我有几个需要客户端表单验证的 html 页面 为此 我使用了一个包含在所有这些页面上的 jQuery 插件 但问题是
  • C# 并行与并行线程代码性能

    我一直在测试 System Threading Parallel 与线程的性能 我很惊讶地发现并行比线程花费更长的时间来完成任务 我确信这是由于我对并行的了解有限 我刚刚开始阅读 我想我会分享一些片段 如果有人可以向我指出并行代码比线程代码
  • Maven:缺少工件 org.springframework:spring:jar:4.2.6

    我在 SpringToolSuite 中有一个动态 Web 项目 它被转换为 Maven 项目 我遇到问题 缺少工件 org springframework spring jar 4 2 6 我已经尝试清理 重建和运行该项目 它给 读取文件
  • jquery 事件委托

    我正在尝试使用事件委托重写一段代码 希望它能停止与另一个 js 代码段发生冲突 但我已经破解了密码 原来的 to scale up on hover var current h null var current w null piccon
  • 由于未经授权的错误,无法使用 dotnet CLI 将 nuGet 包推送到 GitLab

    GitLab 现在支持 nuget 公共和私有 feed 存储库 我有一个公共项目 例如 https gitlab com sunnyatticsoftware sasw test support https gitlab com sunn
  • 使一个 sbt 配置依赖于另一个配置

    sbt 文档显示了如何仅在项目之间声明依赖关系的示例 但我确信有方法可以声明一个配置依赖于另一个配置 就像测试配置使用编译配置中的类路径一样 如何声明我自己的配置 以便它依赖于编译配置生成的类路径 我更仔细地研究了建议的解决方案 然后又出现
  • for 循环和 into_iter() [重复]

    这个问题在这里已经有答案了 据我了解 for循环隐式调用into iter 在向量上循环遍历它 但是 在下面的代码中 为什么vec在 Question1 1 的第一个 for 循环中没有消耗 但在第二个 for 循环中 vec 消耗了 fn
  • 地图与星图的性能?

    我试图对两个序列进行纯Python 没有外部依赖 逐元素比较 我的第一个解决方案是 list map operator eq seq1 seq2 然后我发现starmap函数来自itertools 这看起来和我很相似 但事实证明 在最坏的情
  • 为我的网站构建 API 哪个更好:MVC 或 Ado.net 数据服务?

    我有一个用MVC构建的网站 现在我想为这个网站构建一个API 让用户使用这个API来实现不同的网站 Web服务 插件和浏览器扩展 我经历过这个article http weblogs asp net cibrax archive 2010
  • Python 可以使用单独的媒体播放器打开 mp3 文件吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否可以开一个mp3Python 中的文件 可以使用Popen 我并不是要在程序中运行它 我的意思是作为媒体播放器中的一个单独窗口或其
  • 当 f & g 修改同一个全局变量时,表达式 f() > g() 的值是否未定义或未指定?

    UPDATE 由用户标记ecatmur 它是重复的在 C99 中 f g 是未定义还是只是未指定 https stackoverflow com questions 3951017 in c99 is fg undefined or mer