为什么内置类型的链式前缀增量/减量对于C ++而言不是UB?

斯拉瓦

在cpprefernce.com的前缀增加示例中,有以下代码:

int n1 = 1;
...
int n3 = ++ ++n1;

为什么在这种情况下链式递增不会导致UB?在这种情况下最多不会违反一次修改的规则吗?

Brian Bi

在C ++ 11和更高版本中,当有两个写操作或一个写操作和一个读操作未排序并访问相同的内存位置时,就会发生UB。但是++x等价于x+=1,所以++ ++n1等价于(n1+=1)+=1,在这里,由于赋值和复合赋值运算符的属性,读取和写入按照严格的顺序进行:首先n1读取,然后写入一个加上原始值,然后得到的值是再次读取,然后将该值加一。

在C ++ 03中,这UB,因为您提到了一条旧规则:两次修改之间没有序列点。但是在C ++ 11中,不再有任何序列点。相反,存在“先于顺序”的偏序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ORA-00979:对于子句而言,不是Oracle的GROUP BY表达式,但对于MySQL无效

来自分类Dev

如何检测是否未使用参数/对于特定用例而言不是必需参数?

来自分类Dev

在 Linux 中使用声卡。理解第一个例子(为什么不是 UB?)

来自分类Dev

为什么运算符==对于std :: unordered_map而言还不够?-C ++

来自分类Dev

为什么将Punning类型视为UB?

来自分类Dev

为什么C宏不是类型安全的?

来自分类Dev

就编译而言,什么是“机器”?

来自分类Dev

前缀或后缀增量(或减量)的用法

来自分类Dev

前缀或后缀增量(或减量)的用法

来自分类Dev

值对于定义的数据类型而言太大

来自分类Dev

值对于定义的数据类型而言太大

来自分类Dev

为什么默认情况下C ++类型不是const?

来自分类Dev

就Ansible变量而言,什么是“地图”?

来自分类Dev

就 Groovy 而言,什么是 Jenkins 阶段?

来自分类Dev

对于产生到自己的进程而言,什么功能很小

来自分类Dev

MooseX :: NonMoose对于Moo而言等效于什么?

来自分类Dev

对于产生到自己的进程而言,什么功能很小

来自分类Dev

对于此用例而言,什么是有效的设计?

来自分类Dev

为什么通用类型不是正确的类型?

来自分类Dev

为什么对于标准C字符串来说字节顺序(字节序)不是问题?

来自分类Dev

就功能编程而言,C ++可以提供什么?

来自分类Dev

就C#而言是什么意思?

来自分类Dev

为什么scheme中的`and`运算符不是内置过程

来自分类Dev

为什么sorted()和reversed()是内置函数而不是序列方法?

来自分类Dev

可点击的链接对于图片而言太大

来自分类Dev

文本对于listView而言太多了?

来自分类Dev

参数列表对于ls而言太长

来自分类Dev

文字对于Bootstrap Popover而言太长

来自分类Dev

页面对于窗口而言太大

Related 相关文章

  1. 1

    ORA-00979:对于子句而言,不是Oracle的GROUP BY表达式,但对于MySQL无效

  2. 2

    如何检测是否未使用参数/对于特定用例而言不是必需参数?

  3. 3

    在 Linux 中使用声卡。理解第一个例子(为什么不是 UB?)

  4. 4

    为什么运算符==对于std :: unordered_map而言还不够?-C ++

  5. 5

    为什么将Punning类型视为UB?

  6. 6

    为什么C宏不是类型安全的?

  7. 7

    就编译而言,什么是“机器”?

  8. 8

    前缀或后缀增量(或减量)的用法

  9. 9

    前缀或后缀增量(或减量)的用法

  10. 10

    值对于定义的数据类型而言太大

  11. 11

    值对于定义的数据类型而言太大

  12. 12

    为什么默认情况下C ++类型不是const?

  13. 13

    就Ansible变量而言,什么是“地图”?

  14. 14

    就 Groovy 而言,什么是 Jenkins 阶段?

  15. 15

    对于产生到自己的进程而言,什么功能很小

  16. 16

    MooseX :: NonMoose对于Moo而言等效于什么?

  17. 17

    对于产生到自己的进程而言,什么功能很小

  18. 18

    对于此用例而言,什么是有效的设计?

  19. 19

    为什么通用类型不是正确的类型?

  20. 20

    为什么对于标准C字符串来说字节顺序(字节序)不是问题?

  21. 21

    就功能编程而言,C ++可以提供什么?

  22. 22

    就C#而言是什么意思?

  23. 23

    为什么scheme中的`and`运算符不是内置过程

  24. 24

    为什么sorted()和reversed()是内置函数而不是序列方法?

  25. 25

    可点击的链接对于图片而言太大

  26. 26

    文本对于listView而言太多了?

  27. 27

    参数列表对于ls而言太长

  28. 28

    文字对于Bootstrap Popover而言太长

  29. 29

    页面对于窗口而言太大

热门标签

归档