在c ++中,从long到double的静态转换与使用double构造函数有什么不同?

时间:2017-09-16 09:22:10

标签: c++

我习惯做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);

1 个答案:

答案 0 :(得分:4)

使用类似构造函数的标量类型和等效的&#34; C风格&#34; cast语法,是static_castconst_cast和/或reinterpret_cast的简写,无论哪个都需要。由于它不精确,它可以掩盖错误。

在这种情况下,对于内置数字类型之间的所有转换,C样式转换与static_cast相同。尽管如此,许多C ++用户(包括我)仍然认为这是一个坏习惯。