C语言编译问题

来源:百度知道 编辑:UC知道 时间:2024/05/03 21:11:42
(环境:Turbo C 2.1)
main()
{
int x,y,z;
x=3;y=-7;
z=max(x,y);
printf("%d\n",z);
}

int max(int x,int y)
{
if(x>y)
return(1);
else
return(0);
}
(!!编译通过!!)

main()
{
float x,y,z;
x=3.5;y=-7.5;
z=max(x,y);
printf("%f\n",z);
}

float max(float x,float y)
{
if(x>y)
return(1);
else
return(0);
}

(!!编译有错误!!)(错误提示:type mismatch in redeclaration of 'max')
不是说,如果引用的函数在调用处的后面,需要给函数声明么?(函数原型),但我没声明,为什么编译不出错???

第一个是怎么编译通过的?main()上面没有函数声明int max(int x, int y)?
还有,就算你编译通过了,打出来的结果也不对,你的输出结果应该不是 1,就是0

第二个程序你在main上面加一个函数声明 float max(float x, float y)
还有,两个程序里 max 函数的返回值写的没错,但得不到预期效果,应该改为
if(x>y)
return x;
else
return y;

第三,我不知道Turbo C 2.1有没有自带max函数,很可能是函数冲突,你把 max 改成 _max 试试。

把'z'和'max'设成int型
printf("%d\n",z);

把返回的数值该成浮点数看看,其实你那INT 定义MAX就行了,不用改成FLOAT

需要给函数声明