首页 > 解决方案 > 为什么这个 C 程序的输出是 64 而不是 320?

问题描述

#include <stdio.h>

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

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

    return 0;
}

我期待输出是,320但我得到的是64. 这是什么原因?

标签: cpointersdereference

解决方案


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

您的系统似乎正在使用 little-endian 字节顺序;320 的最低有效 8 位是0b01000000,即以 10 为底的 64。


推荐阅读