C++17 之前的函数交错

2023-11-23

看看这个简单的函数调用:

f(a(), b());

根据标准,调用顺序为a() and b()未指定。 C++17 有附加规则不允许a() and b()交错。据我所知,在C++17之前,没有这样的规则。

现在,看看这个简单的代码:

int v = 0;

int fn() {
    int t = v+1;
    v = t;
    return 0;
}

void foo(int, int) { }

int main() {
    foo(fn(), fn());
}

根据 C++17 规则,v肯定会有这样的价值2接到电话后foo。但是,这让我想知道,对于 C++17 之前的版本,是否能保证同样的效果?或者可能是这样v最终1?如果不是的话,有什么区别吗int t = v+1; v = t;,我们只有v++?


在以前的版本中也不允许函数调用交错。

引用自 C++11 最终草案 (n3337)

1.9 程序执行[执行简介]
...

15. ... When calling a function (whether or not the function is inline), every value computation and side effect associated with any argument expression, or with the postfix expression designating the called function, is sequenced before execution of every expression or statement in the body of the called function. [ Note: Value computations and side effects associated with different argument expressions are unsequenced. —end note ] Every evaluation in the calling function (including other function calls) that is not otherwise specifically sequenced before or after the execution of the body of the called function is indeterminately sequenced with respect to the execution of the called function9.


9) 换句话说,函数执行不会相互交错.

在 C++14 版本的最终草案中也可以找到类似的措辞。

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

C++17 之前的函数交错 的相关文章

  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template

随机推荐

  • 与所有子域 codeigniter 共享会话数据

    我正在尝试使用一个session我所有子域的数据 我创建了一个subdomain in cpanel像这样 mydomain in and my mydomain in使用与我相同的路径mydomain in例子 mydomain in使用
  • 如何在我的电脑上运行php文件

    谁能告诉我如何在我的系统上本地运行 php 文件 目前我正在使用服务器来运行文件 我知道要安装 php 和 Apache 我需要查看该程序的输出 例如 如果我需要更多内容 您能告诉我如何运行这些文件吗 php 有一个简单的方法来运行轻量级服
  • 在 QMainWindow 中选择“中央小部件”的规则是什么?为什么它很重要?

    我明白设置CentralWidget需要在Q主窗口乍一看 中央小部件的含义似乎非常不言自明 但有没有更严格的定义 central 比如说 我有几个同样重要的小部件位于窗口的中央区域 我是否应该始终找到一种方法将它们分组在一起并将该组设置为中
  • PHP filemtime 函数 - “统计失败”

    我的 PHP filemtime 函数有问题 在我的网络应用程序中 我使用带有缓存选项的 Smarty 模板引擎 在我的网络应用程序中 我可以执行一些会产生错误的操作 但让我们只关注一个操作 当我单击页面上的链接时 某些内容会更新 我可以单
  • Linux:是否有从套接字读取或接收超时?

    如何尝试从套接字读取超时数据 我知道 select pselect poll 有一个超时字段 但是使用它们会禁用 tcp reno 堆栈中的 tcp 快速路径 我唯一的想法是在循环中使用 recv fd MSG DONTWAIT 您可以使用
  • 如何拦截CallKit来电屏幕发送的“消息”?

    我正在使用 iOS 10 的 CallKit 来接听来电 我的应用程序中的呼叫不是来自 电话号码 或 电子邮件地址 而是来自我的协议中的内部标识符 因此 我报告来电CXHandleType of CXHandleTypeGeneric 并不
  • 如何在 Linux 服务器上从 PDF 文件创建缩略图/屏幕截图?

    我想创建 PDF 文件的缩略图 以便能够在网站上显示 PDF 文件的简短预览 我用 ImageMagick 尝试过 不幸的是 结果不太令人满意 生成的图像非常模糊 缩略图示例 模糊 原始PDF 见评论 命令 convert thumbnai
  • ETL SSIS:将错误行重定向到单独的表

    我正在开发一个包 其中包含一个源 大约 80 个查找和 1 个目标 源表中的数据不够一致 因此我的包经常失败 有没有一种方法可以传输将它们插入目标表时给出的所有行 例如 我在 Source 中有 5 行 其中第一行和第四行会出错 现在的结果
  • 将2个数组合并成一个多维数组?

    这是基于我最后一个问题 我有这些数组 var array1 new Array Pepsi Coke Juice Water var array2 new Array 35 17 21 99 我想将它们组合起来形成一个多维数组 如下所示 P
  • 在 Powershell 中测试 null:为什么测试空数组的行为与空字符串不同?

    考虑这段代码 Type array v eq null v eq null ne null v ne null Type string v eq null v eq null ne null v ne null 产生以下结果 Type ar
  • 目标缩放导致 Scikit-learn SVM 回归崩溃

    训练 SVM 回归时 通常建议在训练之前缩放输入特征 但如何扩大目标呢 通常这不被认为是必要的 而且我看不出有什么充分的理由说明为什么有必要这样做 然而 在 scikit learn 的 SVM 回归示例中 http scikit lear
  • 如何连接已知长度的数组?

    我有两个已知长度的数组 let left u8 2 1 2 let right u8 3 3 4 5 我的第一次尝试 let whole u8 5 left right 失败并出现错误 error E0369 cannot add u8 2
  • xlwt 即时写入 Excel 工作表

    我习惯于通过以下方式创建电子表格 wbk xlwt Workbook earnings tab wbk add sheet EARNINGS wbk save filepath 有没有什么方法可以不保存到文件路径 而是将其即时写入下载文件的
  • 如何改进 Jquery 移动应用程序的页面转换?

    我在单个 HTML 页面中创建了一个小型 Jquery Mobile 应用程序 我面临的问题是移动设备中页面转换的性能非常糟糕 当我滑动到下一页后 我最终等待了 3 4 秒 然后页面发生变化 我有什么想法可以改进它吗 这是代码
  • Tomcat 中的会话 ID 长度

    我们需要更改tomcat生成的会话ID长度 默认情况下它是 32 字节 不幸的是我们需要 20 的会话 ID 长度 在网上查看我可以看到StandardManager似乎可以管理这个扩展PersistanceManager 有谁知道如果se
  • .NETBackgroundworker对象的线程优先级

    我正在尝试在我正在开发的应用程序中使用 NET Backgroundworker 对象 互联网上的所有材料都说这个对象在 后台 运行 但是我无法确认该后台线程确实以 低优先级 模式运行 出现这个问题是因为在 Windows 中 我假设 后台
  • nanosleep CPU使用率高?

    我注意到 一个名为 nanosleep 的小测试程序在内核高于 2 6 22 的 Linux 机器上运行时 显示出 CPU 使用率的巨大差异 include
  • 在WPF中,如何设置外边框、居中边框和内边框?

    例如 当我为按钮设置边框时 它是外边框 但是 如果我希望它居中或位于内部 最简单的方法是什么 我的意思是 因此 要重新创建您的示例 请使用以下快速概念示例替代方案 然而 有很多不同的方法可以实现相同的效果 但这里至少有一些
  • 使用媒体查询 CSS 的 Internet Explorer 11

    我正在 IE 11 上进行一些测试 它使用的是移动设备的 CSS 而不是 全屏 CSS Chrome Firefox Opera 和 Safari 都使用正确的 全屏 CSS 但 IE 11 正在抓取移动 媒体 CSS 我已经多次清除缓存并
  • C++17 之前的函数交错

    看看这个简单的函数调用 f a b 根据标准 调用顺序为a and b 未指定 C 17 有附加规则不允许a and b 交错 据我所知 在C 17之前 没有这样的规则 现在 看看这个简单的代码 int v 0 int fn int t v