C语言问题,请高手帮我解决

来源:百度知道 编辑:UC知道 时间:2024/05/16 12:28:39
为什么在调用函数时函数类型为整型不用声明,而单精度就要声明?例如:
#include "stdio.h"
main()
{
float a,b;
int c;
scanf(" %f,%f",&a,&b);
c=sum(a,b);
printf(" sum= %d\n",c);
}
sum(float x,float y)
{float s;
s=x+y;
return s;
}
是错误的.
#include "stdio.h"
main()
{
int a,b;
int c;
scanf(" %d,%d",&a,&b);
c=sum(a,b);
printf(" sum= %d\n",c);
}
sum(int x,int y)
{ int s;
s=x+y;
return s;
}
就是正确的
很容易的小问题

哥们,你两个程序写的都有问题,函数如果在主函数后定义,应该在主函数前面声明一下。应该这样
#include "stdio.h"
sum(int x,int y);
main()
{
int a,b;
int c;
scanf(" %d,%d",&a,&b);
c=sum(a,b);
printf(" sum= %d\n",c);
}
sum(int x,int y)
{ int s;
s=x+y;
return s;
}
其次分析到函数默认返回类型问题,这个其实没有必要深究,实际上这个是系统规定的,只要记住就可以了,如果你的函数返回值类型不是整型,而是float,那就把函数的返回值类型声明为float类型就可以了。

首先你看看这个函数
sum(float x,float y)
{
float s;
s=x+y;
return s; //返回一个float
}
如果一个函数没有写返回的数据类型,那么编译器就认为是int 但是这个函数是返回float 而你又没有写上返回类型,所以错误,除了返回int可以不要写之外,其他的都要写.

不过不提倡这样,这样的风格不好,还是都写上,免得惹上麻烦.

因为编译器默认为int的,如果不是,当然需要声明

王八的屁股-规定

因为整形是默认的函数返回值类型,如果返回整形,返回值类型可以不写

float a,b;
int c;
两个float类型数据相乘的结果怎么可能是int呢,这就是错误的原因。把int改成float 就没有问题了。

你可以把上面的C也用float 定义,能不能行
要不的话,我觉得有可能是类型不匹配吧