以下程序测试英特尔处理器上的小/大端。实际上小端是正确的输出。首先,我在没有初始化的情况下投射int
并char*
访问它的值int *
。我不理解输出的第二部分。这里int
指针被强制转换为char *
. 那么为什么int
指针没有改变它的对齐方式char *
呢?
00000000 00000000 00000011 01111111 = 895
0 0 3 127
int main() {
int num = 895;
if(*(char *)&num == 127)
{
printf("\nLittle-Endian\n");
}
else
{
printf("Big-Endian\n");
}
int *p = (char *)&num ;
if(*p == 127)
{
printf("\nLittle-Endian\n");
}
else
{
printf("Big-Endian\n");
}
printf("%d\n",*p);
}
o/p
Little-Endian
Big-Endian
895