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