写一个程序判断字节序是大端还是小端存储?
第一种方法:
1 #include <stdio.h>
2 union uni_test
3 {
4 int a;
5 char c[4];
6 };
7
8
9 int main(void)
10 {
11 union uni_test ua ;
12 ua.a=0x12345678;
13 printf ("ua.a =0x%x\n ",ua.a);
14 printf("c[0]=0x%x\n",ua.c[0]);
15 printf("c[1]=0x%x\n",ua.c[1]);
16 printf("c[2]=0x%x\n",ua.c[2]);
17 printf("c[3]=0x%x\n",ua.c[3]);
18 return 0;
19 }
笔者机器输出:
ua.a =0x12345678
c[0]=0x78
c[1]=0x56
c[2]=0x34
c[3]=0x12
第二种
1 #include <stdio.h>
2
3 int main(void)
4 {
5 int a =0x123456789;
6 char *p = (char*)&a;
7 printf("p[0]= 0x%x\n",p[0]);
8 printf("p[1]= 0x%x\n",p[1]);
9 printf("p[2]= 0x%x\n",p[2]);
10 printf("p[3]= 0x%x\n",p[3]);
11
12
13 return 0;
14 }
输出:
p[0]= 0xffffff89
p[1]= 0x67
p[2]= 0x45
p[3]= 0x23
两种方式输出结果一致