宏定义的问题
#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 了。