-1

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

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

请帮忙。我很抱歉没有清理这个...

4

2 回答 2

2

这是因为您声明mint. 将其声明为floata*b转换为float因为ab也是ints。另一种方法是将函数的返回类型更改为int;

int error(int a, int b){
int product = a*b;
printf("%f\n",product);
return product; 
}    

并使用说明符打印m和。在后一种情况下也不要忘记改变你的功能原型。product%d

于 2013-10-19T14:49:50.730 回答
1
int m;
m = error(a,b);
printf("%f\n",m);

您试图将m显示为float而它是int

这应该是:

m = error(a,b);
printf("%d\n",m);

我的建议:现在坚持使用整数

我认为我们对类型在 C 中的工作方式存在误解。在 PHP 中,变量可以保存一个 int,然后是一个浮点数,然后是一些字符串。在 C 中,变量就像钢桶。它们可以改变内容,但不能改变它们的形状。如果将float分配给int,则浮点值将转换为整数值。一旦将m声明为int,它将保持int到生命的尽头,只能保存int值。

于 2013-10-19T14:52:55.447 回答