【发布时间】:2018-09-19 16:45:14
【问题描述】:
我在一些 c++ 代码中有一些旧式转换,我想将其转换为新式。我看了一下优先级和关联性运算符documentation,但没看懂。
( double ) myValueA() / myValueB()
等价于
static_cast<double>( myValueA() ) / myValueB()
或到
static_cast<double>( myValueA() / myValueB() )
我想其他数字运算符的答案是一样的 (*/+-)
【问题讨论】:
-
见operator precendence。强制转换是最高的先例之一,高于除法和其他算术运算。
-
抱歉,将重新制定
-
@FrançoisAndrieux 你能详细说明一下吗?
-
explicit type conversion 解析为一系列演员根据需要。如果
myValueA()返回的值足以满足static_cast<double>的要求,则将(double)视为1 是正确的。如果无法使用static_cast进行演员表,那只会是reinterpret_cast。另请注意,显式类型转换可以删除const,reinterpret_cast和static_cast都无法做到。因此,某些显式类型转换可能还需要const_cast作为系列的一部分。 -
另请注意,函数调用运算符的优先级高于C-style cast运算符。 (顺便说一句,我们说“更高的优先级”有点误导,但在@FrançoisAndrieux 引用的表中,优先级实际上具有更低的数字)。
标签: c++ casting operator-precedence static-cast