利用共用体来判断系统的大小端模式

union 的大小为 其最大成员的空间。所有成员共享这一个空间。

union A 

{

    char a;

    int b;

    double c;

}

A的大小为其成员 double的大小,其中最大的那个成员。

Big-Endian: 低地址存放高位,如下:

高地址

---------------

buf[3] (0x78) -- 低位

buf[2] (0x56)

buf[1] (0x34)

buf[0] (0x12) -- 高位

---------------

低地址

Little-Endian: 低地址存放低位,如下:

高地址

---------------

buf[3] (0x12) -- 高位

buf[2] (0x34)

buf[1] (0x56)

buf[0] (0x78) -- 低位

--------------



#include

#include

typedef union SmallBig

{

char buf[4];

long num;

}smallbig;

int main()

{

smallbig sb;

sb.num = 0x12345678;

int i = 0;

for (i = 0; i < 4; i++)

{

printf("sb.buf[%d]=%x \n",i, sb.buf[i]);

}

getchar();

return 0;

}


输出

sb.buf[0]=78

sb.buf[1]=56

sb.buf[2]=34

sb.buf[3]=12


由此可见我的电脑是 高字节在高位的小端模式

你可能感兴趣的:(利用共用体来判断系统的大小端模式)