c - 字节序问题?

标签 c endianness

以下代码的输出是什么?

#include<stdio.h>
int main()
{
    int a[4]={4096,2,3,4};
    char *p;
    p=a;
    printf("\n %d",(int)*(++p));
    return 0;
}

sizeof int = sizeof(void*) = 4 bytes

根据我的说法,输出在小端机器上应该是 16,在大端机器上应该是 0。我说得对吗?

最佳答案

4096 是 0x1000,所以(一旦你让它编译)你会期望 16 具有小端表示,而 0 具有大端表示,除非 int 是 24 位宽(即 16 位)。

所有这些都假设 CHAR_BIT == 8,并且没有填充位的有趣业务。在这些假设下,使用 sizeof(int) == 4 进行的编辑也排除了 24 位 int

关于c - 字节序问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4245606/

相关文章:

c - 在 C 中访问结构成员时出现段错误

c++ - 在 Windows 中使用 LockFileEx API 锁定整个文件

c - 当我有一个可以同时接受可变和不可变 char* 的函数时,如何避免警告

c++ - 您如何编写(可移植的)反向网络字节顺序?

C - ntohl 用零替换数字

将大端 MIPS 转换为 C

c - 如何在代码中检索函数持续时间信息?

C 从 GitHub 下载 Zip 文件

c - 小端到 uint,字节数不确定

struct - 使用 binary.Read() 将字节流解码为结构时,是否可以为每个字段指定大/小端?