C 当指针被类型化时会发生什么?

C 当指针被类型化时会发生什么?,c,C,在一些尝试和错误中,我发现了这一点。它正在输出513作为值,不知道为什么 int a; char *x; x =(char *) &a; a = 512; x[0]=1; x[1]=2; printf("%d\n ",a); 在典型的x86平台上,int有四个字节宽,并且以小端存储。Little endian表示字节以相反的方式存储,从最低有效到最高有效。数字512在内存中表示为2×28,或: 完成两项作业后: { 0x01, 0x02, 0x00, 0x00 } // LSB

在一些尝试和错误中,我发现了这一点。它正在输出513作为值,不知道为什么

int a;
char *x;
x =(char *) &a;
a = 512;
x[0]=1;
x[1]=2;
printf("%d\n ",a); 

在典型的x86平台上,
int
有四个字节宽,并且以小端存储。Little endian表示字节以相反的方式存储,从最低有效到最高有效。数字512在内存中表示为2×28,或:

完成两项作业后:

{ 0x01, 0x02, 0x00, 0x00 }
// LSB              MSB
// 2^0  2^8   2^16  2^24

将这四个字节转换回十进制,则得到1×20+2×28=1+512=513。

(2如果整数是8或16或任何大小,它也可以工作,因为它是小尾数
{ 0x01, 0x02, 0x00, 0x00 }
// LSB              MSB
// 2^0  2^8   2^16  2^24