#include <stdio.h>
int main() {
int a = 320;
char *ptr;
ptr = (char *)&a;
printf("%d", *ptr);
return 0;
}
我期待输出是320
但我得到64
。这是什么原因?
如果你的系统的CHAR_BIT
是8(可能就是这种情况)那么你在一个解除引用的char *
指针中最多得到8位。在二进制中,值320
是0b000101000000
。
您的系统似乎正在使用little-endian字节顺序; 320的最低有效8位是0b01000000
,基数为10时为64。
320 = 0b101000000
0b0100000 = 64
你使用的是char指针,你应该使用一个int指针ptr = (char *)&a;