为啥C语言中max函数不能取到最大值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥C语言中max函数不能取到最大值相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
void main()

int max(int x,int y,int z);
int a,b,c,d;
scanf("%d,%d,%d",&a,&b,&c);
d=max(a,b,c);
printf("max=%d\n",d);

int max(int x,int y,int z)

int e;
if(x>y,x>z)e=x;
if(y>x,y>z)e=y;
if(z>x,z>y)e=z;
return(e);

这个程序貌似取不到最大值,课本上例题取2个值中的较大值也好像取不到~
取值结果为三个数中第一个数值,为什么?

上两楼的说的都有问题。
结果也并非一定是第一个数值,
楼主没把所有的情况考虑到,比如说,你若输入1,8,8,则结果是-56,原因是你没考虑到相等情况,楼上两位也没考虑到,所以也会出错。
只需要把条件改成
if(x>=y&&x>=z)e=x;
if(y>=x&&y>=z)e=y;
if(z>=x&&z>=y)e=z;
请上机验证。
参考技术A if(x>y,x>z)e=x;
if(y>x,y>z)e=y;
if(z>x,z>y)e=z;
你这是逗号表达式,只判断后面的表达式是否成立。
得改成这样
if(x>y&&x>z)e=x;
if(y>x&&y>z)e=y;
if(z>x&&z>y)e=z;
参考技术B 把 max函数改成
int max(int x,int y)

y=(y>z?y:z);
x=(x>y?x:y);
return x;
参考技术C 很显然你没有仔细看书

C语言中函数为啥可以嵌套定义 ?

取决于编译器.

我在Ubuntu16.04 用默认gcc,在eclipse中测试可以实现嵌套定义.

经测试在函数中定义的函数,在当前作用域可以被调用.

这样一来,c语言貌似具有了一些面向对象的特性,使用起来比较方便

参考技术A C语言中函数的定义都是相互平行、相互独立的,也就是说在函数定义时,函数体内不能包含另一个函数的定义,即函数不能嵌套定义,但可以嵌套调用。嵌套调用就是某个函数调用另外一个函数(即函数嵌套允许在一个函数中调用另外一个函数)。 参考技术B 函数都是平行的,不可以嵌套定义,可以嵌套调用。 参考技术C C语言不支持函数嵌套定义的,你搞错了吧?本回答被提问者采纳

以上是关于为啥C语言中max函数不能取到最大值的主要内容,如果未能解决你的问题,请参考以下文章

C语言中“max”和“min”如何使用?

c语言如何写一个自定义函数,随意输入n个数,求出这n个数中的最大值

c语言的返回值是啥意思啊?

C语言,设计函数int max(int num); 函数功能:依次分解出正整数num的各位数字,返回最大数字

max函数怎么用

C语言中return语句怎样返回两个或多个值