如何打印NaN的有效载荷?

时间:2016-04-02 11:47:12

标签: c++ nan

我们有像std::nanl这样的特殊功能来制作带有效负载的NaN。目前,我需要做的就是将其打印出来:

#include <iostream>
#include <cmath>
#include <cstring>
#include <cstdint>

int main()
{
    const auto x=std::nanl("1311768467463790325");
    std::uint64_t y;
    std::memcpy(&y,&x,sizeof y);
    std::cout << (y&~(3ull<<62)) << "\n";
}

这取决于long double的特定表示,即它是80位类型的x87 FPU。有没有任何标准方法可以实现这一目标而不依赖于这些实施细节?

1 个答案:

答案 0 :(得分:1)

C ++从ISO C中导入nan*函数。在7.22.1.3中使用ISO C状态:

  

n-char序列的含义是实现定义的

带评论

  

实现可以使用n-char序列来确定要在NaN的有效数中表示的额外信息。

没有方法可以获取存储的信息。