#include <stdio.h>
int main() {
int a = 320;
char *ptr;
ptr = (char *)&a;
printf("%d", *ptr);
return 0;
}
我期望输出为320
,但我却得到64
。是什么原因呢?
答案 0 :(得分:9)
如果系统的CHAR_BIT
为8(可能是这种情况),那么在解引用的char *
指针中最多可获得8位。以二进制形式,值320
是0b000101000000
。
您的系统似乎使用的是低端字节序; 320的最低8位是0b01000000
,以10为底的64位。
答案 1 :(得分:1)
320 = 0b101000000
0b0100000 = 64
您正在使用char指针,应使用int指针ptr = (char *)&a;