境外设立子公司:当返回值return与函数类型不同时?
{float a,b;int c;
scanf("%f,%f",&a,&b);
c=max(a,b);
printf("Max is %d\n",c);}
max(float x,float y)
{float z;
z=x>y?x:y;
return(z);}
正确运行结果:
输入1.5,2.5
Max is 2/*可能是教科书出错了,运行了几次总是错误,不知道哪儿错了?*/
注意结果必须正确..错误在于程序(你们的运行结果都把原结果改了),不过不审谢谢
c应该定义为float,而且输出格式不是%d,而是%f
函数max也要定义成float
main()
{float a,b,c;
scanf("%f,%f",&a,&b);
c=max(a,b);
printf("Max is %f\n",c);}
float max(float x,float y)
{float z;
z=x>y?x:y;
return(z);}
#include <stdio.h>
main()
{float a,b,c;
float max(float,float);
scanf("%f,%f",&a,&b);
c=max(a,b);
printf("Max is %f\n",c);}
float max(float x,float y)
{float z;
z=x>y?x:y;
return(z);}
没有错误 系统会对不同类型的数据进行相应的转换,当高精度的数据赋给低精度数据时,按位截取。例如:2.5如果是float类型的话,把它给int类型的数据赋值,则变为2,不是四舍五入,直接截掉小数位;double类型赋给float类型是情况也是类似。如果是低精度的数据赋给高精度的则在不足的位置补0。和不同类型数据间的混合运算时类似的,手头有谭浩强的《c程序设计(第二版)》的话在3.7节。
按照提问者给出的代码,运行结果是正确的,c=max(a,b); 句将max函数的返回值的整数部分赋值给了c,此处编译器一般会给出一个warning;如果想得出正确的结果,需要将c定义成fllat型。
main()
{
float a,b,c;
scanf("%f,%f",&a,&b);
printf("Max is %f\n",max(a,b));
}
float max(float x,float y)
{
return x>y?x:y;
}