gpt4 book ai didi

c++ - 对于 { A=a;乙=乙; }, "A=a"会在 "B=b"之前严格执行吗?

转载 作者:IT老高 更新时间:2023-10-28 14:00:01 25 4
gpt4 key购买 nike

假设 A , B , a , 和 b都是变量,A 的地址, B , a , 和 b都是不同的。然后,对于以下代码:

A = a;
B = b;

C 和 C++ 标准是否明确要求 A=aB=b之前严格执行?鉴于 A 的地址, B , a , 和 b都是不同的,编译器是否允许为了优化等目的交换两条语句的执行顺序?

如果我的问题在 C 和 C++ 中的答案不同,我都想知道。

编辑:问题的背景如下。在棋盘游戏 AI 设计中,人们使用 lock-less shared-hash table 进行优化,如果我们不添加 volatile,其正确性很大程度上取决于执行顺序限制。

最佳答案

这两个标准都允许这些指令乱序执行,只要这不会改变可观察到的行为。这被称为 as-if 规则:

请注意,正如评论中所指出的,“可观察行为”是指具有已定义行为的程序的可观察行为。如果你的程序有未定义的行为,那么编译器就不会对此进行推理。

关于c++ - 对于 { A=a;乙=乙; }, "A=a"会在 "B=b"之前严格执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25847349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com