有如下代码:
#defie M(x,y,z) x*y+z
void main()
{
int a=1,b=2,c=3;
printf("%d\n",M(a+b,b+c,c+a));
}
问: 以上程序输出的结果是? 答案:12
解析: 宏就是字符替换,因此输出的值为a+b*b+c+c+a;
eg:
#define POW(x) (x)*(x)
#define DOUBLE(x) (x)+(x)
#include<stdio.h>
int main()
{
printf("%d\n",POW(10+10));
printf("%d\n",DOUBLE(10*10)*10);// 注意宏只是字符替换不要多加括号 (10*10)+(10*10)*10
return 0;
#defie M(x,y,z) x*y+z
void main()
{
int a=1,b=2,c=3;
printf("%d\n",M(a+b,b+c,c+a));
}
问: 以上程序输出的结果是? 答案:12
解析: 宏就是字符替换,因此输出的值为a+b*b+c+c+a;
eg:
#define POW(x) (x)*(x)
#define DOUBLE(x) (x)+(x)
#include<stdio.h>
int main()
{
printf("%d\n",POW(10+10));
printf("%d\n",DOUBLE(10*10)*10);// 注意宏只是字符替换不要多加括号 (10*10)+(10*10)*10
return 0;
}
2018-3-17