类型转换困境
Type casting/ conversion dilemma
我还只是刚开始学习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))
来解决这个问题,但这并没有解决任何问题。谷歌似乎也在这个主题上返回了相当模糊的结果。有解决方案吗?
只是一个猜测,但是,你是否得到一个关于初始化的警告,将双精度转换为浮点数(使用MSVS)?或者可能它搞砸了b/c,所有东西最终都被转换为'4'的整数b/c ?
如果是,问题是当你输入一个数字时,它是一个双精度数。但是你把它当作浮点数来使用,为了解析它,那个数字需要是被强制转换的。例如
sphereSA = ((float) 4 * (float) PI * radius * radius);
但是,最好给编译器一些关于PI的类型信息。例如
namespace MyConstants {
const float PI = 3.141;
}
sphereSA = ((float) 4 * MyConstants::PI * radius * radius);
您正在使用C风格强制转换。强制类型转换的语法在c++中发生了变化。您需要查找如下内容:
dynamic_cast<something*>( yourthing );
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++中的双指针类型转换
- 逐位操作的隐式类型转换
- 模板中的类型转换
- 在 C++(和 C)中进行类型转换时明显不一致
- 字符类型转换不兼容
- 将复杂的非基元C++数据类型转换为 Erlang/Elixir 格式,以使用 NIF 导出方法
- C++:用户定义的显式类型转换函数错误
- 将类指针类型转换为键时出错
- 通过引用传递参数时C++类型转换
- 在 C++ 中将一个模板类型的对象类型转换为另一个模板类型
- C++显式类型转换(C 样式强制转换)的强制表示法和static_cast的多种解释
- C++无效的函数类型转换
- 在将派生类指针类型转换为派生类指针后,从基类指针调用派生类函数
- 如何将Windows产品类型转换为名称?
- 通过构造函数方法输出的类到类类型转换是 5500 为什么不是 5555
- 事件系统:使用类型转换或联合进行继承
- 如何在参数中定义隐式类型转换的构造函数?
- 类型转换困境