gpt4 book ai didi

c - C99 标准是否允许将变量分配给自身?

转载 作者:行者123 更新时间:2023-12-04 11:15:48 28 4
gpt4 key购买 nike

C99 标准是否允许将变量赋值给它们自己?例如,以下是否有效:

int a = 42;

/* Case 1 */
a = a;

/* Case 2 */
int *b = &a;
a = *b;

虽然我怀疑案例 1 是有效的,但我对案例 2 的看法犹豫不决。

在赋值的情况下,右侧是否在将值赋值给左侧的变量之前完全求值——或者是在取消引用指向被赋值变量的指针时引入的竞争条件?

最佳答案

这两种情况都是完全有效的,因为 a 的值仅用于确定要存储的值,而不是确定要存储该值的对象。

本质上,在一项作业中,您必须区分三种不同的操作

  • 确定要存储值的对象
  • 评估 RHS
  • 将确定的值存储在确定的对象中

这三个操作中的前两个可以按任何顺序执行,甚至可以并行执行。第三个显然是另外两个的结果,所以它会在后面。

关于c - C99 标准是否允许将变量分配给自身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17703803/

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