1 //小端数据模式与内存增长方向一致,大端数据模式与内存增长方式相反
2 //大端 寄存器的低地址存放字节数据的高位
3 //小端 寄存器的低地址存放字节数据的低位
4 //联合方法判断 C语言中的数据类型都是从内存的低地址向高地址扩展,小端方式中i所分配的内存那个最小地址中就存着1,其他字节是0. 大端的话则1在i的最高地址字节处存放,char是一个字节,联合类型中的数据成员共享内存,所以强制将char型量c指向i, 指向的一定是i的最低地址,若c的值是1,数据存储模式是小端,否则就是大端
5 //直接判断法 将0x12345678赋值给i,若是小端数据存储模式,则按照从低到高的地址,相应位置存放0x78,0x56,0x34,0x12
6 #include<stdio.h>
7 //联合(union)方式判断法
8 typedef union{
9 int i;
10 char c;
11 }my_union;
12 int checkSystem1(void){
13 my_union u;
14 u.i=1;
15 return (u.i==u.c);
16 }
17 //直接判断法
18 int checkSystem2(void){
19 int i=0x12345678;
20 char *c=&i;
21 return((c[0]==0x78)&&(c[1]==0x56&&c[2]==0x34&&c[3]==0x12));
22 }
23 int main(void){
24 if(checkSystem1()){
25 printf("小端\n");
26 }else{
27 printf("大端\n");
28 }
29 if(checkSystem2()){
30 printf("小端\n");
31 }else{
32 printf("大端\n");
33 }
34 return 0;
35 }
每日一道面试题--编程判断大小端
最新推荐文章于 2024-04-18 22:28:53 发布