刚开始学习C语言的时候,我们可能会用 if 语句进行求解,具体如下
#include <stdio.h>
int main()
{
int a,b,c; //声明
int max;
printf("请按顺序输入三个数:");
scanf("%d %d %d",&a,&b,&c); //输入
/* 比较a、b、c的大小*/
if(a > b)
max = a;
else
max = b;
if(max < c)
max = c;
printf("在%d、%d、%d三个数中,最大的数是%d\n",a,b,c,max);
}
但是我们可以想一想,是否可以进行优化呢?
于是,就有了下面的一段
#include <stdio.h>
int main()
{
int a,b,c;
int max;
printf("请按顺序输入三个数:");
scanf("%d %d %d",&a,&b,&c);
max = a > b ? a : b;
if(max < c)
max = c;
printf("在%d、%d、%d三个数中,最大的数是%d\n",a,b,c,max);
}
我们可以看到,将a、b的比较利用条件运算符的表达式进行了优化,那是否还可以进一步优化呢?
就像a、b比较大小的过程一样
这时候可以想到一个新的概念,宏定义
宏定义可以做什么呢?
它的定义是,根据一系列预定义的规则替换一定的文本模式。
也就是说,可以根据定义的规则进行完全替换
#define N 2 //将N替换为2
当然啦,宏定义还可以这么用
#define fun(a,b) (a>b ? a : b)
如此一来,大家都知道该怎么继续优化了吧!
#include <stdio.h>
#define MAX (a > b ? a : b)
int main()
{
int a,b,c;
printf("请按顺序输入三个数:");
scanf("%d %d %d",&a,&b,&c);
printf("max = %d\n",MAX > c ? MAX: c);
return 0;
}
完成啦!