我仍然只是从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))
解决此问题,但这并没有解决任何问题。谷歌似乎也在这个问题上回归了相当模糊的结果。有解决方案吗
答案 0 :(得分:1)
只是一个猜测但是,你是否收到关于初始化将一个double转换为float(使用MSVS)的警告?或者可能它搞乱了b / c所有东西最终都被投射为'4'的整数b / c?
如果是这样,问题是当你输入一个数字时它是一个双倍。但是你将它用作浮点数来解决它,这个数字需要被投射。 E.g。
sphereSA = ((float) 4 * (float) PI * radius * radius);
但是,最好给编译器一些关于PI的类型信息。 E.g。
namespace MyConstants {
const float PI = 3.141;
}
sphereSA = ((float) 4 * MyConstants::PI * radius * radius);
答案 1 :(得分:-4)
您正在使用C样式演员。使用C ++改变了强制转换的语法。 你想找到这样的东西:
dynamic_cast<something*>( yourthing );