以下代码的输出是什么?
#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/