C语言——求a、b、c三个整数中的最大值

刚开始学习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;
}

完成啦!

  • 43
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值