pmg*_*pmg 17
在C99中 <math.h>
Run Code Online (Sandbox Code Playgroud)7.12 Mathematics <math.h>
[#5] The macro
NAN
is defined if and only if the implementation supports quiet
NaNs for the float type. It expands to a constant
expression of type float representing a quiet NaN. |
Run Code Online (Sandbox Code Playgroud)
5.2.4.2.2/3:
浮动类型可能包含其他类型的浮点数,例如......在单位和NaN中.NaN是表示非数字的编码.一个安静的NaN几乎在每个算术运算中传播,而不会引起浮点异常; 信令NaN通常在作为算术操作数发生时引发浮点异常.
7.12/5(math.h):
NAN当且仅当实现支持float类型的安静NaN时,才定义宏.它扩展为float类型的常量表达式,表示安静的NaN.
所以,你可以得到一个值,如果您的实现支持的NaN可言的,如果某些或所有这些的NaN是安静的.如果你没有进入实现定义的领域.
还有一些浮点宏的担心,编译器前端可能不知道它是否支持该功能,因为它产生的代码可以在支持变化的架构的多个版本上运行.我不知道这是否适用于这个宏,但如果你到实现定义的领土是另一种情况-预处理器可能会保守地声称,它不支持此功能在实际的实施作为一个整体,为你"确实如此.