Tob*_*ull 7 c++ floating-point
假设在以下代码中
float f1 = ...;
double d1 = static_cast<double>(f1);
float f2 = static_cast<float>(d1);
ASSERT( f1 == f2 );
Run Code Online (Sandbox Code Playgroud)
变量f1初始化为不是NaN的东西.那么断言是否保证符合C++标准?
以下是一些线索,但不是答案:
4.6 float类型的prvalue可以转换为double类型的prvalue。该值不变。这种转换称为浮点升级。...
4.8浮点类型的prvalue可以转换为另一种浮点类型的prvalue。如果可以在目标类型中精确表示源值,那么转换的结果就是该精确表示。如果源值在两个相邻的目标值之间,则转换的结果是这些值之一的实现定义选择。