我们有像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。有没有任何标准方法可以实现这一目标而不依赖于这些实施细节?
答案 0 :(得分:1)
C ++从ISO C中导入nan*
函数。在7.22.1.3中使用ISO C状态:
n-char序列的含义是实现定义的
带评论
实现可以使用n-char序列来确定要在NaN的有效数中表示的额外信息。
没有方法可以获取存储的信息。