这是我的代码:
#include <stdio.h>
float aveg(a,b){
float result;
result=(a+b)/2;
return result;
}
int main(void) {
float a,b,avg;
printf("first no: ");
scanf("%f",&a);
printf(" %f\n",a);
printf("second no: ");
scanf("%f",&b);
printf(" %f\n",b);
avg=(a+b)/2;
printf("average is: ");
printf("%.2f", avg);
avg=aveg(a,b);
printf("\n average from function is: ");
printf("%.2f",avg);
}
这是我的输出...
第一个号码:3 3.000000 第二个号码:5 5.000000 平均值为:4.00 函数平均值为:537133056.00
有人可以解释为什么我从 float 函数中得到如此不同的数字吗? 我尝试声明该函数:
float avg(float a, float b);
但是编译器给我带来了错误...... 有什么想法吗?
最佳答案
最快的解决方法是添加一个点(稍后会解释):
result=(a+b)/2.;
a
和 b
均声明为 int
(默认情况下,因为您没有指定任何类型),因此您的 ( a+b)
结果是一个整数,然后除以另一个整数。
要使除法结果为浮点型,您应该确保至少有一个操作数是 float
类型,这就是为什么 2.
中的点(其中只是 2.0
的简短版本)。
真正的解决方法当然是正确声明函数参数的数据类型:
float aveg(float a, float b){
如果您的代码中没有其他语法错误,这将起作用。
关于c - 从函数返回浮点值... (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33202005/