C99标准:
在前一个和下一个序列点之间,一个对象的存储值最多只能通过表达式的计算修改一次
C11标准:
如果标量对象上的副作用相对于同一标量对象上的另一个副作用是无序的,则行为未定义。
因此,C99标准的定义是否不完整,因此在C11中进行了更新,因为它只包含术语<code>object</code>,而不包含<code>scalar object</code>?
这是因为 C11 试图涵盖多线程/并行执行。“抽象机器”中程序执行的基本规则在 C99 和 C11 (C11 5.1.2.3/3) 之间添加了这个繁琐的文本:
Sequenced before是由单个线程执行的求值之间的不对称、可传递、成对关系,这导致这些求值之间的部分顺序。给定任意两个求值A和B,如果A在B之前排序,那么A的执行应该在B的执行之前。(相反,如果A在B之前排序,那么B在A之后排序。)如果A不在B之前或之后排序,那么A和B不排序。当A在B之前或之后排序时,A和B的排序是不确定的,但未指明是哪一个。13)表达式A和B的求值之间存在序列点意味着与A相关的每个值计算和副作用都在与B相关的每个值计算和副作用之前排序。(附录c中给出了序列点的总结。)
因此,您引用的部分(C99 6.5/2)进行了相应的修改,以适应抽象机器中程序执行的定义,而抽象机器现在也涵盖了并行执行。不幸的是,因为C99文本可读性更强。从技术上讲,如果不考虑并行执行,根本没有什么变化。关于C99序列点的规则仍然适用,只是措辞不同。这一变化也意味着C11与具有类似规则的C11同步。
问题内容: 这是我在Linux上编译的一些代码: 很好 很好 失败并显示以下错误: 不喜欢Linux中C99的定义与C99有何不同? 问题答案: 这是预处理和GNU C vs C99的一系列后果。 首先,: 包括 稍后,它在一个块内定义。 所以: 什么啊 -这是BSD和System V共有的东西 在这一点上定义了吗?-我们需要检查一下 所以现在: 默认情况下,当您使用GCC时定义(因为这就是C99
问题内容: 我在继承的应用程序中遇到了如下查询: 正如我解析的那样,它应该不返回任何内容(应评估为false,正确)。但是(至少在我的Oracle机器上),它返回了中所有内容的完整列表。当我在MSAccess / Jet和MSSQL中尝试相同的操作时,我得到了预期的行为。为什么对Oracle有所不同(为什么原始开发人员要这样做)? 注意:我对使用“ where 1 = 1”的+ s和-s有一些迷信
weatherLocation仍然包含“like in”
本文向大家介绍说说HTML中的标签有什么作用?相关面试题,主要包含被问及说说HTML中的标签有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 供浏览器识别这是一个HTML文档 标识了HTML文档的头尾 是HTML文件的根元素 H5之后可以通过设置html的manifest属性来实现离线缓存 可以通过设置lang属性来设置页面的语言,常用的有zh和en
在一些phpmyadmin库中,有一系列与逻辑错误相关的问题,但它们似乎都与此略有不同。 我对“设计师”选项卡中的这种奇怪行为感到有点不知所措。我被告知“已在服务器上检测到错误!”我应该“查看此窗口的底部”,但正如您从图像中看到的,控制台中没有任何内容,错误消息也不清楚: 每次打开Designer选项卡时都会出现此弹出窗口后,我决定跟踪它: ... 查看/usr/share/phpmyadmin/
问题内容: 我有一个班级和年龄段。但是,当我更改对象的年龄时,该类的所有其他对象也会更改。 有人可以帮助解决这个问题吗? 问题答案: 静态变量 是 类变量, 因此从变量声明中删除为: 根据java docs: 在声明中具有static修饰符的字段称为静态字段或类变量。它们与类关联,而不与任何对象关联。该类的每个实例共享一个类变量,该变量位于内存中的一个固定位置。
我已经创建了基于JAX-RS和使用Jersey嵌入式web服务器的RESTful web服务。我的ant脚本成功地编译了代码,但当我运行时,它给出了错误。所以经过研究,我想出了一个解决方案&这里是使用外部jar文件构建java ant文件。我所做的是创建一个捆绑的jar文件,尝试执行它&它工作得非常好。我想知道背后的原因: 为什么这个解决方案有效? 为什么要合并所有jar文件? 它是否类似于我们按
问题内容: 因此,我在闲逛时使用了递归,我发现使用递归的循环比常规的while循环要慢得多,我想知道是否有人知道为什么。我已经包括了我下面所做的测试: 但是,在上一次测试中,我注意到如果删除该语句,则表明速度略有提高,因此我想知道if语句是否是造成循环速度差异的原因? 问题答案: 您已将函数编写为尾递归。在许多命令式和函数式语言中,这将触发尾部递归消除,在这种情况下,编译器用简单的JUMP替换了C