给数组i赋值,为什么c[1]=0,c[2]=0
#include<stdio.h>
int main()
{
union
{
int i[2];
long k;
char c[4];
}r,*p=&r;
p->i[0]=0x39;
p->i[1]=0x38;
printf("%x %x %x %x %x %x",p->c[0],p->c[1],p->c[2],p->c[3],p->i[0],p->i[1]);
return 0;
}
因为一个int占4字节,一个char只占1字节
你给i[0]赋值0x39,那么只有最低字节有数据是0x39,高3个字节都是0
i[1]是另外4个字节
你定义的union里i和k长度相同,都是8字节,c只占4字节,对应的是最后4个字节