我参加了一次面试,得到了以下代码:-
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 ?
编辑:-我只知道它与内存中的位存储有关。
这是一个联盟,意思是 i 和 c 占用相同的内存。 512为0x200,表示第一个字节为零,第二个字节为2(每个字节取两个十六进制数字)。 这当然取决于CPU的endianness。
i
c