功能根本没有返回值 - 不是空白

时间:2013-10-19 13:35:57

标签: c

我有这个函数没有返回函数值。我添加了一些随机测试器来尝试调试,但没有运气。谢谢!

#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!

请帮忙。我为没有清理这件事而道歉...

2 个答案:

答案 0 :(得分:2)

这是因为您将m声明为int。将其声明为float并将a*b转换为float,因为ab也是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 价值观。