说明
在宏定义中,字符串内的形参通常要用括号括起来避免出错
例题演示
分析一下代码输出结果:
#include<stdio.h>
#define M(y) y*y
int main()
{
int a,b;
printf("请输入a的值:");
scanf("%d",&a);
b=M(a+1);
printf("b=%d",b);
return 0;
}
思路分析
如果a=1,那么b的值等于多少呢? b=4?不对!!!
b=3,为什么呢?
分析一波,b=4的条件是(a+1)*(a+1) ,其中a等于1, a+1--->y 这么理解没错吧,但是 这个y是没有括号的!!
仔细看 仔细看 仔细看!
所以 应该是 b = a+1 * a + 1 当a=1时,b=3
给y加上括号的话