gpt4 book ai didi

c - 当指针被类型转换时会发生什么?

转载 作者:行者123 更新时间:2023-11-30 20:57:39 25 4
gpt4 key购买 nike

在一些尝试和错误中,遇到了这个。它输出 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,或者:

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

完成两项作业后,您将获得:

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

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

关于c - 当指针被类型转换时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57150137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com