我正在接受采访,并且给了我以下代码: -
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 ?
编辑: - 我所知道的是它与内存中的位存储有关。
答案 0 :(得分:5)
这是一个联盟,意思是i
和c
占据相同的记忆
512是0x200,意思是第一个字节是零,第二个是2(每个字节取两个十六进制数字)
这当然取决于CPU的字节顺序。