我是C ++演员的初学者。
我需要知道任何代码中的static_cast<double>
和double
是否可以变换?
在以下代码中,我可以将static_cast<double>
替换为double
吗?这要短得多。我是否放弃了任何可读性?
a= static_cast<double> ( 3 ) / static_cast<double>( 7 );
static_cast
,int
,char
等其他基本类型的size_t
怎么样?
根据解释,它们必须相同。但有没有例外情况?
答案 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;