union:
利用union的特性并且和结构的嵌套来实现一个32位整数,低16位加上高16位;
#include <stdio.h>
union lowhigh_add
{
struct
{
unsigned short low;
unsigned short high;
}x;
unsigned int y;
}u1;
int main()
{
unsigned int i = 0x11223344;
/******** method 1 ********/
u1.y = 0x11223344;
printf("%x\n", (u1.x.low + u1.x.high));
/******** method 2 ********/
printf("%x\n", (i >> 16) + (i & 0xffff));
return 0;
}
第二种为最普通的移位方法,都打印4466。