是static_cast <double>还是加倍?</double>

时间:2015-03-26 00:26:53

标签: c++ c++11 casting type-conversion static-cast

我是C ++演员的初学者。 我需要知道任何代码中的static_cast<double>double是否可以变换?

在以下代码中,我可以将static_cast<double>替换为double吗?这要短得多。我是否放弃了任何可读性?

a= static_cast<double> ( 3 ) / static_cast<double>( 7 );

static_castintchar等其他基本类型的size_t怎么样?

根据解释,它们必须相同。但有没有例外情况?

1 个答案:

答案 0 :(得分:2)

请阅读When should static_cast, dynamic_cast, const_cast and reinterpret_cast be used?


C ++ 11草案标准调用T(number)功能表示法和(T) number强制表示法。鉴于表达式列表是单个表达式,它们是等价的:

  

§5.2.3/ 1 简单类型说明符(7.1.6.2)或 typename-specifier   (14.6)后面跟一个带括号的表达式列表构造一个值   给定表达式列表的指定类型。如果表达   list是单个表达式,类型转换表达式是   相当于(在定义中,如果在意义上定义)   相应的演员表达(5.4)。 [...]

(T) number可以调用static_cast,在这种情况下会有以下行为:

  

§5.2.9/ 4否则,表达式e可以显式转换为a   如果是,请使用T格式的static_cast键入static_cast<T>(e)   声明T t(e);形式良好,对于一些发明的临时性   变量t(8.5)。这种显式转换的效果是   与执行声明和初始化然后使用相同   作为转换结果的临时变量。表达方式   当且仅当初始化使用它时,e才用作glvalue   一个glvalue。

你可以节省很多打字,只使用浮动文字(类型为double)。

a = 3.0 / 7.0;