联合和内存管理

Union and memory management

我在面试时得到了以下代码:-

union mix
{
    int i;
    char c[2];
};

int main()
{
    union mix key;
    key.i=512;
    printf("\n %d,%d,%d",key.i,key.c[0],key.c[1]);
    return 0;   
}

当我回家并在系统上 运行 它时,我得到了 输出:- 512,0,2.

谁能给我解释一下它是如何工作的或者为什么是 c[1]=2

编辑 :- 我只知道它与内存中的位存储有关。

是一个联合,意思是ic占用相同的内存。
512 是 0x200,意思是第一个字节是零,第二个是 2(每个字节有两个十六进制数字)。
这当然取决于 CPU.

的字节顺序