某计算机软件大型企业的一道关于宏的笔试题,求解!
#inculde <stdio.h>
#define THE_MACRO(x)\
(x=((0xaaaaaaaa&x)>>1)+(0x55555555&x),\
x=((0xcccccccc&x)>>2)+(0x33333333&x),\
x=((0xf0f0f0f0&x)>>4)+(0x0f0f0f0f&x),\
x=((0xff00ff00&x)>>8)+(0x00ff00ff&x),\
x=(x>>16)+(0x0000ffff&x))
int main()
{
int x =34512;
int n = THE_MACRO(x);
printf("%d",n);
return 1;
} 笔试 宏
[解决办法]
替换的是x这个字母,不是x变量的值。我举的y例子不是很明显了。用y字母替换宏体里的x。相当于编辑器里的字符串查找替换。