我习惯做1.将下面的代码强制转换为浮点计算,但它只是发生在我身上:与2的行为有什么不同?它看起来不那么整洁。
long blah = 3;
// 1
double d1 = 1 / static_cast<double>(blah);
// 2 note: not C-style (double) blah
double d2 = 1 / double(blah);
答案 0 :(得分:4)
使用类似构造函数的标量类型和等效的&#34; C风格&#34; cast语法,是static_cast
,const_cast
和/或reinterpret_cast
的简写,无论哪个都需要。由于它不精确,它可以掩盖错误。
在这种情况下,对于内置数字类型之间的所有转换,C样式转换与static_cast
相同。尽管如此,许多C ++用户(包括我)仍然认为这是一个坏习惯。