#includeint main(int argc, char **argv) { union { int u32; char arr[4]; } xn; xn.arr[0] = 0x44; xn.arr[1] = 0x33; xn.arr[2] = 0x22; xn.arr[3] = 0x11; if (xn.u32 == 0x11223344) printf ("little endiann"); else if (xn.u32 == 0x33441122) printf ("pdp endiann"); else if (xn.u32 == 0x44332211) printf ("big endiann"); else printf("can't recognise the endianness of the processor.n"); return 0; }
巧妙的利用c语言联合体的特点:
结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
运行
$ gcc endianness.c $ ./a.out little endian



