我想创建一个函数,用来计算圆的表面积。
#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