c语言 - 我自己的功能有问题。输出错误



我想创建一个函数,用来计算圆的表面积。

#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

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

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

#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 中,逗号用于所谓的"逗号运算符"。它需要 2 个表达式,a, b ,并从左到右计算它们,然后返回右表达式的结果 (b (。

所以在你的情况下:

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

其中 C 读作: (x = 3), 14159265 * (r * r);

也就是说,将 3 分配给 x ,然后将 3 个数字相乘。

这就解释了为什么你总是得到3。

维基百科将对逗号运算符给出更深入的解释:https://en.wikipedia.org/wiki/Comma_operator

最新更新