#include
#define f(x,y,z) x>(y>z?y:z)?x:(y>z?y:z)
int main()
{
int a,b,c;
printf("输入3个数:");
scanf("%d %d %d",&a,&b,&c);
printf("max=%d\n",f(a,b,c));
return 0;
}
#define MAX(a,b,c) (a)>(b)?(a)>(c)?(a):(c):(b)>(c)?(b):(c);
注意:这里最好对每个变量都加上括号,这是为了防止当a,b,c为表达式的时候,宏只是简单的展开。另一方面,要注意的是,若是有这个样的形式MAX(a++,b,c),则会出现新的问题,如a被多次自增。这里可以试试用内联函数,那么上述问题可以不出现。