#include <stdio.h> #include <stdlib.h> int big_or_little_endian(void) { union data { int a; char b; }d; d.a = 1; return (d.b==1); } int main() { if(big_or_little_endian()) printf("little endian\n"); else printf("big endian\n"); return 0; } 联合体union中每次只能有一个变量赋值,且其他值都被赋值为同样的值。所有数据都是从地地址开始存储,因为int存储地址范围比char大,所以当将int 类型值存储到char中时会被截断,这样可以看到是先储存低位还是高位,从而判断是低位优先(小端)还是高位优先(大端)。 |
|
来自: champion_xu > 《my yc》