[UNP]判断大端小端

 1 #include    "unp.h"
 2 
 3 int
 4 main(int argc, char **argv)
 5 {
 6     union {
 7       short  s;
 8       char   c[sizeof(short)];
 9     } un;
10 
11     un.s = 0x0102;
12     printf("%s: ", CPU_VENDOR_OS);
13     if (sizeof(short) == 2) {
14         if (un.c[0] == 1 && un.c[1] == 2)
15             printf("big-endian\n");
16         else if (un.c[0] == 2 && un.c[1] == 1)
17             printf("little-endian\n");
18         else
19             printf("unknown\n");
20     } else
21         printf("sizeof(short) = %d\n", sizeof(short));
22 
23     exit(0);
24 }

union是一个很少见的关键字。

在union中可以定义多个成员,union的大小由最大的成员决定。

union中多个成员共享一块内存,对某一成员的赋值会改变其他成员。

posted @ 2015-01-31 13:17  msh  阅读(132)  评论(0编辑  收藏  举报