我有这个函数没有返回函数值。我添加了一些随机测试器来尝试调试,但没有运气。谢谢!
#include <stdio.h>
#include <math.h>
#include <time.h>
#define N 100
float error(int a, int b);
int main(){
printf("START\n");
srand(time(NULL));
int a, b, j, m;
float plot[N+1];
printf("Lower bound for x: ");
scanf("%d", &a);
printf("Upper bound for x: ");
scanf("%d", &b);
printf("okay\n");
for(j = 0; j < N; j++)
plot[j] = 0;
printf("okay1\n");
m = error(a,b);
printf("%f\n",m);
return 0;
}
float error(int a, int b){
float product = a*b;
printf("%f\n",product);
return product;
}
所以m = error(a,b)
无论如何总是给出0!
请帮忙。我为没有清理这件事而道歉...
答案 0 :(得分:2)
这是因为您将m
声明为int
。将其声明为float
并将a*b
转换为float
,因为a
和b
也是int
s。另一种方法是将函数的返回类型更改为int
;
int error(int a, int b){
int product = a*b;
printf("%f\n",product);
return product;
}
并使用m
说明符打印product
和%d
。在后一种情况下也不要忘记改变你的功能原型。
答案 1 :(得分:1)
int m;
m = error(a,b);
printf("%f\n",m);
您正在尝试将 m 显示为 float ,而 int 。
这应该是:
m = error(a,b);
printf("%d\n",m);
我的建议:暂时坚持 ints 。
我认为我们误解了C中的类型是如何工作的。在PHP中,变量不能容纳一个int,然后浮点数,以及一段时间后的某个字符串。在C变量就像钢桶。他们可以改变内容,但不会改变他们的形状。如果将 float 分配给 int ,则浮点值将转换为整数值。一旦你将 m 声明为 int ,它将保持 int 到其生命的终点,只能持有 int 价值观。