c中的序列点

2023-12-31

命令式编程中的序列点定义了计算机程序执行中的任何点,在该点处保证先前评估的所有副作用都已执行,并且尚未执行后续评估的任何副作用。

这是什么意思?有人可以用简单的话解释一下吗?


当序列点发生时,基本上意味着您可以保证之前的所有操作都已完成。

在没有插入序列点的情况下两次更改变量是未定义行为的一个示例。

例如,i = i++;未定义,因为两次更改之间没有序列点i.

请注意,这不仅仅是changing一个变量两次可能会导致问题。这实际上是与任何其他用途相关的更改。该标准使用术语“值计算and当讨论事物如何排序时,副作用”。例如,在表达式中a = i + i++, the i(值计算)和i++(副作用)可以按任意顺序进行。

维基百科有一个序列点列表 http://en.wikipedia.org/wiki/Sequence_point尽管最终列表应始终取自 ISO 标准,但 C 和 C++ 标准中都有。来自 C11 附录 C(释义):


以下是标准中描述的顺序点:

  • 在函数调用和实际调用中对函数指示符和实际参数的求值之间;
  • 在运算符的第一个和第二个操作数的计算之间&&, ||, and ,;
  • 在条件的第一个操作数的计算之间?:运算符以及第二个和第三个操作数中的任何一个被评估;
  • 完整声明符的结尾;
  • Between the evaluation of a full expression and the next full expression to be evaluated. The following are full expressions:
    • 初始化器;
    • 表达式语句中的表达式;
    • 选择语句的控制表达式 (if or switch);
    • a 的控制表达while或做声明;
    • a 的每个表达式for陈述;
    • return 语句中的表达式。
  • 紧接着库函数返回之前;
  • 在与每个格式化输入/输出函数转换说明符相关的操作之后;
  • 每次调用比较函数之前和之后,以及对比较函数的任何调用和作为参数传递给该调用的对象的任何移动之间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c中的序列点 的相关文章

  • 访问私人成员[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 通过将类的私有成员转换为 void 指针 然后转换为结构来访问类的私有成员是否合适 我认为我无权修改包含我需要访问的数据成员的类 如果不道德 我
  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • 获取按下的按钮的返回值

    我有一个在特定事件中弹出的表单 它从数组中提取按钮并将标签值设置为特定值 因此 如果您要按下或单击此按钮 该函数应返回标签值 我怎样才能做到这一点 我如何知道点击了哪个按钮 此时代码返回 DialogResult 但我想从函数返回 Tag
  • 将数组向左或向右旋转一定数量的位置,复杂度为 o(n)

    我想编写一个程序 根据用户的输入 正 gt 负 include
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • 在 ASP.NET Core 3.1 中使用包含“System.Web.HttpContext”的旧项目

    我们有一些用 Net Framework编写的遗留项目 应该由由ASP NET Core3 1编写的API项目使用 问题是这些遗留项目正在使用 System Web HttpContext 您知道它不再存在于 net core 中 现在我们
  • 在数据库中搜索时忽略空文本框

    此代码能够搜索数据并将其加载到DataGridView基于搜索表单文本框中提供的值 如果我将任何文本框留空 则不会有搜索结果 因为 SQL 查询是用 AND 组合的 如何在搜索 从 SQL 查询或 C 代码 时忽略空文本框 private
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 将 xml 反序列化为类,list<> 出现问题

    我有以下 XML
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • 如何使用 std::string 将所有出现的一个字符替换为两个字符?

    有没有一种简单的方法来替换所有出现的 in a std string with 转义 a 中的所有斜杠std string 完成此操作的最简单方法可能是boost字符串算法库 http www boost org doc libs 1 46
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke

随机推荐

  • Mnesia 中安全、顺序且可扩展的计数器

    我正在 Erlang OTP 中编写一个应用程序 并希望在版本记录系统上使用顺序计数器 我首先用 mnesia dirty update counter but the experience of using it drove out th
  • Django - 用多个计数进行注释

    我有一个模型叫Post它有两个字段upvotes and downvotes Now upvotes downvotes are ManyToManyField to a Profile 这是模型 class Post models Mod
  • 跟踪 Erlang 中从邮箱消费消息的操作

    我浏览了文档trace 3Erlang 中的 BIF 然而 我的一个观察结果是它不能用于跟踪邮箱中消息的使用情况 旗帜 receive 仅跟踪消息何时添加到进程的邮箱 有没有一种方法可以跟踪事件 例如使用receive构造 如果不是 是否有
  • 未报告的异常 java.sql.SQLException;必须被抓住还是被宣告被抛出? [复制]

    这个问题在这里已经有答案了 我在尝试编译以下代码时遇到此错误 我想知道我做错了什么 unreported exception java sql SQLException must be caught or declared to be th
  • 如何在Android中正确实现feed(类似于Facebook/Instagram)?

    我对 Android 很陌生 我正在尝试创建一个包含大量图像和一些元数据的社交应用程序 它有一个类似于 Facebook 上的信息流的屏幕 我想让这个屏幕尽可能的平滑和标准 以下是我正在使用的库 OkHttp Picasso Retrofi
  • Xcode 如何找到隐式目标依赖项?

    Xcode 有时会自动查找依赖项 我认为当我是定义关系的人并且当我变得懒惰时 这是可以的 但我经常发现自己面临着一个具有多个目标的现有 中型到大型 项目 由于该项目是由其他人制作的 因此我发现很难理解哪些目标取决于什么并非所有关系都是明确的
  • 如何使用 WCF 连接 Apple 的 GSX NewGeneration Web 服务?

    从 2015 年 8 月 15 日开始 Apple 的 GSX Web 服务将升级到更安全的版本 每个请求都需要客户端 SSL 证书 我需要采取哪些步骤才能使用 WCF 框架和 C NET 连接到这个新一代 Web 服务 Apple 的文档
  • Selenium (Python) - 单击按钮元素但不将页面重定向到目标链接

    我正在 Python 中使用 Selenium 测试 Web UI 我遇到了一个测试用例 其中按钮单击后应重定向到另一个页面 但是 每次代码执行时都没有任何异常 但页面仍然没有被重定向 我确信按钮被正确单击 因为按钮动画和鼠标光标发生变化
  • Excel:使用工作表作为函数?

    我有一个 Excel 工作表 它接受两个输入并生成一个输出 我当前可以打开工作表 将两者键入单元格 A1 和 A2 结果显示在 A3 中 有没有办法可以将其变成函数或子例程 以便我可以在另一个工作表中使用它来填写值表 数据表 http of
  • Code Golf:验证数独网格

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 介绍 有效的数独网格由数字 1 到 9 填充 并且数字在 9 行或列的每个子块中出现的次数不会
  • Grails jQuery Mobile 应用程序中的 Spring Security 刷新错误

    我有一个 Grails 2 0 1 jQuery Mobile 应用程序 这是我第一次使用 Spring Security 我遵循了 Peter Ledbrook 的出色指示post http blog springsource org 2
  • 如何将 pg_dump 与连接 uri / url 一起使用?

    我可以调用psql像这样 psql postgres 我该如何使用pg dump带有以下格式的连接字符串postgres 比将 URI 分解为主机 帖子 用户名 密码更方便 有这方面的语法吗 pg dump postgres usernam
  • MySQL 无法在 AMPPS OS X 上启动

    我在使用 AMPPS 启动 mysql 时遇到问题 我正在使用 OS X Mavericks 和最新版本的 Ampps 在小系统崩溃并重新启动后 我无法启动 mysql mysql 错误 2014 01 22 18 12 41 398 No
  • C# 获取机器IP地址的方法

    如何在 C 中获取机器的 IP 地址 IPAddress localIPs Dns GetHostAddresses Dns GetHostName 您的计算机没有单个 IP 地址 并且某些返回的地址可能是 IPv6 MSDN 链接 Dns
  • 获取视频上传的确切时间

    我正在使用Youtube API http gdata python client googlecode com svn trunk pydocs gdata html使用关键字查询进行搜索 import gdata youtube imp
  • ASP.NET MVC3 - “对象引用未设置到对象的实例”错误

    我对 NET 和 MVC3 比较陌生 尝试添加对象的实例时 我遇到了上述错误消息的问题 下面是我的代码 关键日期类 public class KeyDate Key public int KeyID get set StringLength
  • 如何将我的解决方案纳入 Windows 问题报告和解决方案

    Windows Vista 添加了问题报告和解决方案功能 用于记录软件问题 将其报告给 Microsoft 然后表示他们会收集这些问题的解决方案并提供给用户 因此 当我的程序遇到错误并崩溃时 用户会收到异常报告 source beholdg
  • 单击时不要隐藏 OverlayPanel

    我想做 PrimeFaces覆盖面板 http www primefaces org showcase labs ui overlayPanel jsf即使用户单击工具提示之外的区域也保持可见 关闭工具提示的唯一方法是使用其上的 关闭 按钮
  • Apiary:将 API 导出为 JSON,以生成客户端代码

    我们都知道养蜂场很强大 或者不是 我认为确实如此 我想知道如何才能更进一步允许用户导出 API 的 JSON 描述 因此开发人员可以编写客户端代码生成脚本 这应该有帮助 http ttezel github io blog 2013 02
  • c中的序列点

    命令式编程中的序列点定义了计算机程序执行中的任何点 在该点处保证先前评估的所有副作用都已执行 并且尚未执行后续评估的任何副作用 这是什么意思 有人可以用简单的话解释一下吗 当序列点发生时 基本上意味着您可以保证之前的所有操作都已完成 在没有