评论者提到了,以及关于union各州的Cppreference:
union
从最近编写的联合成员中读取它是未定义的行为.
这就是为什么你的程序表现如此:它是未定义的行为.它可以显示之前的值,或崩溃,或介于两者之间的任何内容.
numbers.PI = 3.14; numbers.B = 12; cout< @ user7402737你不应该避免使用联合会,但你不应该访问最近写的联盟成员.