相关疑难解决方法(0)

读取与在联合中写入的成员不同的成员是否是未定义的行为?

union test{
  char a; // 1 byte
  int b;  // 4 bytes
};

int main(){ 
  test t;
  t.a = 5;
  return t.b;
}
Run Code Online (Sandbox Code Playgroud)

这个链接说:https : //en.cppreference.com/w/cpp/language/union

从最近未写入的联合成员中读取是未定义的行为。

据此,我上面的示例代码有UB吗?如果是这样,那么联盟的意义何在?我认为重点在于从相同的内存位置读取/写入不同的值类型。

如果我需要访问该most recently written值,那么我将只使用常规变量而不是联合。

c++

1
推荐指数
1
解决办法
74
查看次数

标签 统计

c++ ×1