union IP
{
unsigned int ipaddr;
unsigned char ar[4];
};
void Print_IP(unsigned int ipaddr)
{
union IP ip;
ip.ipaddr = ipaddr;
for (int i = 3; i >= 0; --i)
{
printf("%d", ip.ar[i]);
if (i > 0)
printf(".");
}
}
int main()
{
unsigned int ipaddr = 2576980377;
Print_IP(ipaddr);
return 0;
}
也可以这样设计:
union IPNode
{
unsigned int ipaddr;
struct
{
unsigned char s1;
unsigned char s2;
unsigned char s3;
unsigned char s4;
};
};
void Print_IP(unsigned int ipaddr)
{
IPNode ip;
ip.ipaddr = ipaddr;
printf("%d.%d.%d.%d", ip.s4, ip.s3, ip.s2, ip.s1);
}
int main()
{
unsigned int ipaddr = 2576980377;
Print_IP(ipaddr);
return 0;
}
本程序在VS2017下运行通过