【发布时间】:2013-02-28 19:43:17
【问题描述】:
我仍然只是从 C++ 开始,还没有处理太多类型转换。我的印象是语法是 (type) (variables) 但是,这在这种情况下似乎不起作用。
float calcSphere (int radius)
{
float sphereSA;
sphereSA = (4 * PI * (radius*radius));
return sphereSA;
}
PI 是在代码顶部使用#define PI 3.14 声明的符号常量,我试图通过使用(float) (4 * PI * (radius*radius)) 来解决这个问题,但这并没有解决任何问题。谷歌似乎也返回了关于这个主题的相当模糊的结果。有什么解决办法吗?
【问题讨论】:
-
它对我有用,你遇到了什么错误?
-
球体的表面积。我得到的错误是无效的一元类型参数(有“int”)。
-
@Revoo 对不起。我没有密切注意函数名称。我只是在看变量
radius。公式是正确的。我不确定你的问题到底是什么。请发布完整的程序和错误信息。 -
@Pubby 我仔细检查了一遍,发现我在常量声明的末尾有一个分号,我可以发誓我没有放。我现在觉得自己像个白痴,但至少我知道一元是什么。代码现在按预期工作,感谢您的帮助!
-
@Revoo 您可以将其发布为您自己问题的答案。无论如何,
#define不应该在 C++ 中用于定义常量,因为您可以使用类型安全的const或constexpr关键字来代替。此外,不应使用 C 风格的强制转换,因为可以使用更安全的static_cast关键字。如果您使用它们,就不会遇到这些问题。
标签: c++ types casting type-conversion