假设在下面的代码中
float f1 = ...;
double d1 = static_cast<double>(f1);
float f2 = static_cast<float>(d1);
ASSERT( f1 == f2 );
变量f1
被初始化为非 NaN 的值。 C++ 标准是否保证该断言成立?
以下是一些线索,但不是答案:
4.6 float 类型的纯右值可以转换为 double 类型的纯右值。该值不变。这种转换称为浮点提升。
...
4.8 浮点类型的纯右值可以转换为另一种浮点类型的纯右值。如果源值可以在目标类型中精确表示,转换的结果是准确的
表示。如果源值位于两个相邻的目标值之间,则转换的结果是实现定义的对其中任一值的选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)