为什么这个C程序的输出64而不是320?

问题描述 投票:3回答:2
#include <stdio.h>

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

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

    return 0;
}

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

c pointers dereference
2个回答
9
投票

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

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


1
投票
320 = 0b101000000
0b0100000  = 64

你使用的是char指针,你应该使用一个int指针ptr = (char *)&a;

© www.soinside.com 2019 - 2024. All rights reserved.