在以下代码中假设
float f1 = ...;
double d1 = static_cast<double>(f1);
float f2 = static_cast<float>(d1);
ASSERT( f1 == f2 );
变量f1
被初始化为不是NaN的东西。那么断言是否保证由C ++标准保持?
答案 0 :(得分:4)
以下是一些线索,但不是答案:
4.6 float类型的prvalue可以转换为double类型的prvalue。该值保持不变。此转换称为浮点提升。 ...
4.8浮点类型的prvalue可以转换为另一个浮点类型的prvalue。 如果源值可以在目标类型中准确表示,则转换的结果就是精确的 表示。如果源值位于两个相邻目标值之间,则转换结果是这些值中任一个的实现定义选择。