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 else19 printf("unknown\n");20 } else21 printf("sizeof(short) = %d\n", sizeof(short));22 23 exit(0);24 }
union是一个很少见的关键字。
在union中可以定义多个成员,union的大小由最大的成员决定。
union中多个成员共享一块内存,对某一成员的赋值会改变其他成员。