C语言没有max这个函数,需要自己定义并编写max函数。
为宝丰等地区用户提供了全套网页设计制作服务,及宝丰网站建设行业解决方案。主营业务为成都做网站、成都网站建设、成都外贸网站建设、宝丰网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
例如源代码可以是:
#include stdio.h
int max (int a, int b) {
if (ab)
return a;
else
return b;
}
int main()
{
int a,b,c;
scanf ("%d %d",a,b);
c = max (a,b);
printf ("%d",c);
return 0;
}
运行结果
输入 2 3
输出 3
这就涉及到函数与宏的优缺点了
宏会在编译器在对源代码进行编译的时候进行简单替换,不会进行任何逻辑检测,即简单代码复制而已,既然是单纯的替换,如果你括号去掉由于优先级的关系,就有可能出现问题。
之所以用宏是因为 宏的效率高,不需要压栈 和出栈
#include stdio.h
#define min(x,y) (x)(y)?(y):(x)
int main()
{
int a,b,c;
scanf("%d%d%d",a,b,c);
printf("min:%d\n",min(min(a,b),c));
return 0;
}
宏定义min(x,y)求x,y中较小的数,这里的三目运算目注意要括号
然后输出叠加两个min
当然宏定义也可以带三个参数,但是就写得比较长,不易阅读
作答不易,望采纳
4的意思就是,min(*p++, b ) 遇到这个调用时,就把它替换成:
((*p++) = (b)?(*P++):(b)); 问题是顺着3的问题来设计的,说不用括号就变成了:*p++ = b? *p++:b 就是这样,*p是比较后才自己加的,如果有括号了,就是先自加再比较,
所以用与不用括号得两种不同的结果,