一、宏定义
#include <stdio.h>
#define getmax(a,b,c) a>b?(a>c?a:c):(b>c?b:c)
int main()
{
float a,b,c,max;
scanf("%f%f%f",&a,&b,&c);
printf("%.3f",getmax(a,b,c));
return 0;
}
二、函数
#include <stdio.h>
void getmax(float a,float b,float c)
{
float max;
max=a>b?(a>c?a:c):(b>c?b:c);
printf("%.3f\n",max);
}
int main()
{
float a,b,c,max;
scanf("%f%f%f",&a,&b,&c);
getmax(a,b,c);
return 0;
}
三、解析
a>b?(a>c?a:c):(b>c?b:c)
首先a与b比较;
如果a>b成立,则较大的值为a,执行":"前的式子(a>c?a:c),进行a与c比较;
如果a>c成立,则返回较大的值a,如果不成立则返回较大的值c;
如果a>b不成立,则较大的值为b,执行":"后的式子(b>c?b:c),进行b与c比较;
如果b>c成立,则返回较大的值b,如果不成立则返回较大的值c;
通过这两次双目运算,最终返回三个数最大的值。