定义一个求三个数中最大数的带参数的宏,并在程序中调用

2025-02-05 20:43:27
推荐回答(2个)
回答1:

#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;
}

回答2:

#define MAX(a,b,c) (a)>(b)?(a)>(c)?(a):(c):(b)>(c)?(b):(c);
注意:这里最好对每个变量都加上括号,这是为了防止当a,b,c为表达式的时候,宏只是简单的展开。另一方面,要注意的是,若是有这个样的形式MAX(a++,b,c),则会出现新的问题,如a被多次自增。这里可以试试用内联函数,那么上述问题可以不出现。