为什么此C程序的输出是64,而不是320?

时间:2019-03-15 20:27:20

标签: c pointers dereference

#include <stdio.h>

int main() {
    int a = 320;
    char *ptr;

    ptr = (char *)&a;
    printf("%d", *ptr);

    return 0;
}

我期望输出为320,但我却得到64。是什么原因呢?

2 个答案:

答案 0 :(得分:9)

如果系统的CHAR_BIT为8(可能是这种情况),那么在解引用的char *指针中最多可获得8位。以二进制形式,值3200b000101000000

您的系统似乎使用的是低端字节序; 320的最低8位是0b01000000,以10为底的64位。

答案 1 :(得分:1)

320 = 0b101000000
0b0100000  = 64

您正在使用char指针,应使用int指针ptr = (char *)&a;