【发布时间】:2019-05-01 23:49:01
【问题描述】:
我是 c 新手,尝试使用主函数之外的函数,我想测试我得到的结果,但在打印函数的值时发现错误。
#include <stdio.h>
#include <math.h>
/*function prototype f*/
int f(double x);
/*main*/
int main(void){
double x = 0.1;
printf("the value is %.3f\n", f(x));
printf("the value is %.3f", sqrt(1.0-(x*x)));
return 0;
}
int f(double x){
double value;
value = sqrt(1.0-(x*x));}
return value;
}
这个基本代码从给定的 x 中找到一个值,我想稍后在循环中使用它。但是当我运行它时,我得到以下输出
值为-1.....
值为 0.995
(... 是一个随机序列 字符)
我不确定函数 f 和主函数内部计算的实际值有什么区别,以及为什么会出现这个问题
【问题讨论】:
-
您正在将函数结果转换为 int - 更改函数声明/定义,使其返回 double 而不是 int。
-
计算说明:
sqrt((1.0-x)*(1.0+x))将提供更准确的答案,尤其是当x接近 1.0 时。要查看,请使用 1.0 和"%e"附近的值。 -
tribo32,您使用的编译器没有警告
printf("the value is %.3f\n", f(x));?
标签: c printf double function-prototypes