宏定义的问题
#define MAX(x,y) x>y?x:yint main()
{
int a=10,b=20;
int c=3*MAX(a,b);
printf ("%d\n",c);
}
运行结果是10
为什么?求解
#define MAX(x,y) x>y?x:y int main() { int a=10,b=20; int c=3*MAX(a,b); printf ("%d\n",c); }宏展开后:
int main() { int a=10,b=20; int c=3*a>b?a:b; printf ("%d\n",c); }就是直接用x>y?x:y代替掉 MAX(x,y)。因为是MAX(a,b),展开后就是 a>b?a:b
#define MAX(x,y) (x>y?x:y) int main() { int a=10,b=20; int c=3*MAX(a,b); printf ("%d\n",c); }展开后就成了
int main() { int a=10,b=20; int c=3*a>b?a:b; printf ("%d\n",c); }O 了。