我自己的功能有问题。输出错误

时间:2019-06-21 20:13:06

标签: c function

我想创建一个函数,该函数可以计算圆的表面积。

#define pi 3,14159265

float FI (float r);



float FI (float r) {

    float x;
    x = pi * (r * r);    //pi is defined at the beginning. I cut the "head"

    return x;
}

FI返回3不管我给它什么输入。

请帮助我。我真的不知道该怎么办。

编辑:将FI更改为返回int而不是float

2 个答案:

答案 0 :(得分:5)

您编写的函数FI返回一个int。这意味着无论计算出什么值,都会被截断-例如,将3.14159转换为3。要解决此问题,请将返回类型更改为float

不幸的是,您对pi的定义是错误的。您使用的是,分隔整数和小数部分的欧洲惯例,而C使用了.分隔整数和小数部分的美国惯例。将pi的定义更改为使用点而不是逗号。

答案 1 :(得分:4)

#define pi 3.14159265    // use a `.` here

float FI (float r);



float FI (float r) {

    float x;
    x = pi * (r * r);

    return x;
}

您需要更改pi才能使用.,而不是欧洲的,

对那些好奇的人的解释:

在C中,逗号用于所谓的“逗号运算符”。它接受两个表达式a, b,并从左到右对其求值,然后返回右表达式(b)的结果。

所以在您的情况下:

x = pi * (r * r); 扩展为: x = 3,14159265 * (r * r);

哪个C读为: (x = 3), 14159265 * (r * r);

也就是说,将3分配给x,然后将多个3一起分配。

这说明了为什么您总是得到3。

Wikipedia将对逗号运算符进行更深入的说明: https://en.wikipedia.org/wiki/Comma_operator