C++ 如何在C++;14?

C++ 如何在C++;14?,c++,c++14,nan,C++,C++14,Nan,我需要得到-nan仅用于double类型和算术 因此,代码应该是这样的: double a = ... cout << a << endl; -nan double a=。。。 cout如果您的平台使用IEEE754浮点,则0.0/0.0将计算为NaN 或者,您可以使用std::numeric\u limits::quiet\u NaN(),检查平台上的std::numeric\u limits::has\u quiet\u NaN是否为true 实际上不存在有符号

我需要得到
-nan
仅用于
double
类型和算术

因此,代码应该是这样的:

double a = ...

cout << a << endl;

-nan
double a=。。。

cout如果您的平台使用IEEE754浮点,则
0.0/0.0
将计算为NaN

或者,您可以使用
std::numeric\u limits::quiet\u NaN()
,检查平台上的
std::numeric\u limits::has\u quiet\u NaN
是否为
true

实际上不存在有符号的
NaN
,尽管
NaN
的表示可能包含一个符号位,可以由
std::cout
拾取。也许在您的平台上
-0.0/0.0
会生成一个“负”
NaN
cout的结果可以直接使用,例如

#包括
#包括
int main()
{
双a=-std::nan(“1”);

std::cout要得到一个负的nan,简单地说,或者是一个带有0x8000000的nan表示。你必须将地址转换为一个无符号字符*或长-长*,或者当然。

“需要”。这是家庭作业要求吗?我会把这个问题标记为答案,但我说你只需要使用算术,所以答案是肯定的(无穷大编号/无穷大编号)=-NaN,但我认为你给出这个答案只是因为我的英语不好。对不起,是的,我可能没有按照你的意图解释你的问题。这个限制的原因是什么?性能?你能不能不只是将值初始化为常量?这是唯一的
constepr
方法。的确。我不喜欢
std::NaN(“1”)
出于这个原因。
#include <iostream>
#include <cmath>

int main()
{
    double a = -std::nan("1");

    std::cout << a << std::endl;
}