1)写一个宏,计算结构体中某变量相对于首地址的偏移,并给出说明
#include <stdio.h>
#define OFFSETOF(id ,element) (unsigned long)(&(((struct id*)0)->element))
void main()
{
struct Person
{
char sex ;
int n;
};
OFFSETOF(Person, sex);
printf("%d\n",OFFSETOF(Person,n));
}
运行结果:
2)写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。
#include <stdio.h>
#define SWAP(num) ((((num)&0x55555555)<<1)|(((num)&0xaaaaaaaa)>>1))
void main()
{
int num = 0;
scanf("%d", &num);
printf("逆序为:%d", SWAP(num));
}
运行结果: