union a
{
int x;
char a[2];
}
Run Code Online (Sandbox Code Playgroud)
如果我们为x分配512值并尝试打印[0]和[1]那么输出的内容请解释如何?
根据标准,写入一个工会成员,然后从另一个成员读取的结果没有定义.几乎任何事都可能发生.
实际上,如果你在小端机器上运行代码,[0]可能是0,而[1]可能是2.在16位大端机器上,[0]将是2并且a [1]将为0.在32位大端机器上,(不存在,因为你定义的东西)a [2]将是2,并且a [0],a [1]和a [3]将为0.