define的问题
#include<stdio.h>#define a(x) x*2
void main()
{
int n,m;
n = 5;
m = 1;
printf("a(x)=%d\n",a(n+m));
return 0;
}
结果为什么是7? 宏是直接替换的所以a(n+m) 替换之后就是 n+m*2,也就是5+1*2=7
定义宏时给x加括号 #define a(x) (x)*2,这样替换之后就是 (5+1)*2 定义的宏是直接带进去的。不经过处理,也就是a(n+m) 是 n +m*2 学习学习 很牛逼的样子
页:
[1]