为什么要经历static_cast-an数字到双倍的麻烦?

Joh*_*ohn 6 c++ double casting static-cast

在我正在编写的代码中使用:

double part2 = static_cast<double>(2) * somthing1
  * ( static_cast<double>(1) + something2 )
  + ( static_cast<double>(1) / static_cast<double>(2) ) * something3
  + ( static_cast<double>(1) / static_cast<double>(2) ) * pow ( something4, 3 );
Run Code Online (Sandbox Code Playgroud)

(somethings是doubles.)

怀疑有一个很好的理由来解决这个问题

static_cast<double>(1)

等等,但似乎我可以通过更少的打字来解决问题.

我不明白的是什么?

提前致谢.

Pau*_*l Z 7

static_cast由于自动数字促销,许多这些都是不必要的.非常必要的那些是用于构造数字1/2的那些,尽管在这种情况下没有明显的理由不能仅仅说出来0.5.在任何情况下,注意的编译器将删除所有这些并用编译时常量替换它们.

  • 除非后缀明确指定,否则浮动文字的类型为"double". (7认同)