如何在c ++中将int类型更改为double

时间:2013-03-10 09:13:07

标签: c++ types numbers primitive-types

有没有办法将变量初始化为通用数字类型或int,然后将其类型更改为double?例如?

TYPE x = 4;
// commands changing its type
here it(variable x) became double.

我知道这很奇怪。

变量必须具有相同的名称。

2 个答案:

答案 0 :(得分:10)

没有。 C ++是一种静态类型语言。声明变量时,类型是固定的。

你可以使用联盟来做你所描述的事情,但需要非常小心,例如

union DoubleInt
{
  int i;
  double d;
};

DoubleInt X;
X.i = 4;

// ... whatever

X.d = X.i;
X.d += 0.25;

但是工会真的只是一个明智的选择,你迫切需要打包。您还可以创建一个可以表现为double或int的类,但实际上,您所说的内容听起来并不像您在用C ++方式思考。

最后,boost::variant可能会做你想做的事情吗?

答案 1 :(得分:2)

虽然无法更改变量的类型,但您可以定义一个能够表示各种类型变量的类型。这通常称为变体。转到并获取Boost.Variant,它允许您编写如下代码:

boost::variant<int, double> t_either_int_or_double;

t_either_int_or_double = 1;

// now it is "int"
assert(boost::get<int>(t_either_int_or_double);

t_either_int_or_double = 1.0;

// now it is "double"
assert(boost::get<double>(t_either_int_or_double);