首先解析一下共用体与大小端模式。
在C语言中,使几个不同的变量共占同一段内存的结构,称为“共用体”类型的结构。共用体变量所占内存长度等于最长的成员的长度。
定义共用体类型变量的一般形式为:
union 共用体名
{
成员表列
}变量表列;
大端格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。小端格式则与大端存储格式相反。
union的使用受系统大小端的影响,如以下的共用体变量在大端模式与小端模式的共用体变量中的存储格式分别如下:
union check
{
int i;
char c;
}cc;
大端模式:
int i=1;
0x0 | 0x0 | 0x0 | 0x1 |
低地址 高地址
小端模式:
int i=1;
0x0 | 0x0 | 0x0 | 0x1 |
高地址 低地址
由以上分析可以写出以下判断大小端模式的代码:
#include<stdio.h>
int checkSys()
{
union check
{
int i;
char c;
}cc;
cc.i = 1;
return (cc.c == 1);
}
int main()
{
if( 0 != checkSys())
{
printf("当前所使用的系统为小端模式的系统");
}
else
{
printf("当前所使用的系统为大端模式的系统");
}
return 0;
}