编程判断一个机器是大端存储还是小端存储
#include <stdio.h>
int main()
{
int a = 1;
char
p = (char)&a;
if(
p == 1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}
封装成一个函数
#include <stdio.h>
int check_sys()
{
int a = 1;
char *p = (char)&a;
if(p == 1)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
if(check_sys()==1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}
对上面的函数进行优化
#include <stdio.h>
int check_sys()
{
int a = 1
;
char *p = (char)&a;
return p;
}
int main()
{
if(check_sys()==1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}
#include <stdio.h>
int check_sys()
{
int a = 1
;
return (char*)&a; //如果是小端返回1,如果是大端返回0
}
int main()
{
if(check_sys()==1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}
用联合体(共用体)来判断一个机器是大端存储还是小端存储
#include <stdio.h>
int check_sys()
{
union
{
int i;
char c;
}un;
un.i = 1;
return un.c;
}
int main()
{
if(check_sys()==1)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}