【发布时间】:2015-10-22 21:31:48
【问题描述】:
是以下未定义的行为吗?
union {
int foo;
float bar;
} baz;
baz.foo = 3.14 * baz.bar;
我记得在两个序列点之间写入和读取相同的底层内存是 UB,但我不确定。
【问题讨论】:
-
评估是无序的,但不是副作用,在 C++11 中是有序的。
-
您想要哪种语言的答案?
-
@AlanStokes:C 和 C++,标记为:D
-
请明确您想要 C 还是 C++ 答案。不是两者都有,否则这个问题太宽泛了。
-
@Walter 那么为什么 SO 允许两个标签呢?
标签: c++ c language-lawyer undefined-behavior unions