问我如何确定机器的字节顺序是大端还是小端?
答常用的技术是使用指针
int x = 1; if(*(char *)&x == 1) printf("little-endian\n"); else printf("big-endian\n");或联合体
union { int i; char c[sizeof(int)]; } x; x.i = 1; if(x.c[0] == 1) printf("little-endian\n"); else printf("big-endian\n");
(请注意,除了简单的大端和小端字节序之外,还有其他字节序的可能性[脚注] 。)
参考文献:H&S 第 6.1.2 节,第 163-4 页