首页 > 解决方案 > 从 main 之外的函数打印双打

问题描述

我是 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 和主函数内部计算的实际值有什么区别,以及为什么我会遇到这个问题

标签: cprintfdoublefunction-prototypes

解决方案


您使用 int 而不是 double 作为原型。这应该会给你正确的答案。

#include <stdio.h>
#include <math.h>
#include <conio.h>

/*function prototype f*/
double f(double x);

/*main*/
int main() {

    double x = 0.1;

    printf("the value is %.3f\n", f(x));
    printf("the value is %.3f", sqrt(1.0 - (x*x)));

    _getch();
    return 0;
}

double f(double x) {
    double value;
    value = sqrt(1.0 - (x*x));
    return value;
}

推荐阅读