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

Com*_*rit 3 c pointers dereference

#include <stdio.h>

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

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

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

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

Gov*_*mar 9

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

看来您的系统使用的是低端字节序。320的最低有效8位是0b01000000,以10为底的64位。