我写了以下代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *p=(int *)malloc(sizeof(int));
*p=0x8F7E1A2B;
printf("%x\n",*p);
unsigned char *q=p;
printf("%x\n",*q++);
printf("%x\n",*q++);
printf("%x\n",*q++);
printf("%x\n",*q++);
return 0;
}
代码输出如下所示:
8F7E1A2B
2B
1A
7E
8F
任何人都可以解释此代码的输出。 预先感谢。
答案 0 :(得分:2)
我想您可能希望按Big Endian顺序获得字节,即8F-7E-1A-2B
。
这完全取决于体系结构的endianness:字节序是数字的二进制表示形式中字节的顺序。最常见的是:
8F-7E-1A-2B
2B-1A-7E-8F
。您的架构是小端的7E-8F-2B-1A
或1A-2B-8F-7E
旁注you shouldn't cast the result of malloc:
int *p = (int *)malloc(sizeof(int)); // nope
int *p = malloc(sizeof(int)); // yep