目录
利用联合体打印IP地址
一般处理
void PrintIP(unsigned int ip)
{
int i = 0;
int a =0;
for(i = 0;i<4;++i)
{
a = ip & 0x0ff;
printf("%d",a);
ip>>= 8;
if(ip!=0)//少了这一步判断会多打出来一个点
printf(".");
}
printf("\n");
}#include <iostream>
using namespace std;
//联合体
联合体:存放顺序是所有成员都从低地址开始存放的,并且共用同一块内存的首地址。
联合体成员的对齐方式要适合全部的成员
//利用联合体打印IP地址
union isip{
unsigned int ip;
struct{
unsigned char a1,a2,a3,a4;
};
};
void print_ip(unsigned int ip)
{
isip rhs;
rhs.ip=ip;
printf("%d.%d.%d.%d\n",rhs.a1,rhs.a2,rhs.a3,rhs.a4);
}
int main()
{
unsigned int ip=192168111245;
print_ip(ip);
return 0;
}
利用联合体判断大小端
#include <iostream>
using namespace std;
//联合体判断大小端
union res{
int a;
char b;
};
int ret1()
{
res ls;
ls.a=1;
return ls.b;
}
int ret2()
{
int a=1;
char*p=(char*)&a;
return *p;
}
int main()
{
int res1=ret1();
if(res1==1)
printf("小端存储\n");
else
printf("大端存储\n");
int res2=ret2();
if(res2==1)
printf("小端存储\n");
else
printf("大端存储\n");
return 0;
}
版权声明:本文为zhanxiao5287原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。