C++ Reference: Standard C++ Library reference: C Library: cfenv: FE_INVALID
C++官方参考链接:https://cplusplus.com/reference/cfenv/FE_INVALID/
宏
<cfenv>
FE_INVALID
int
无效参数异常
此宏展开为int类型的值,用于标识无效实参引发的浮点异常。
invalid argument exception会被引发,以表明传递给函数的实参超出了它的域(即,函数没有为该值定义),例如sqrt(-1.0)。
引发此异常的函数返回的值未指定。
FE_INVALID被定义为一个精确的2的幂的值,允许将多个浮点异常组合成一个值(使用位或操作符:|):
macro value(宏值) | description(描述) |
---|---|
FE_DIVBYZERO | Pole error: division by zero, or some other asymptotically infinite result (from finite arguments).(极点错误:除以零,或其他渐进无穷大的结果(来自有限的参数)。) |
FE_INEXACT | Inexact: the result is not exact.(不精确:结果不精确。) |
FE_INVALID | Domain error: At least one of the arguments is a value for which the function is not defined.(域错误:至少有一个参数是函数没有定义的值。) |
FE_OVERFLOW | Overflow range error: The result is too large in magnitude to be represented as a value of the return type.(上溢范围错误:结果的大小太大,不能用返回类型的值表示。) |
FE_UNDERFLOW | Underflow range error: The result is too small in magnitude to be represented as a value of the return type.(下溢范围错误:结果的大小太小,无法用返回类型的值表示。) |
FE_ALL_EXCEPT | All exceptions (selects all of the exceptions supported by the implementation).(所有异常(选择实现支持的所有异常)。) |
某些库实现可能支持额外的浮点异常值(其对应的宏也以FE_开头)。
C99
库可以在<fenv.h>中只定义它们支持的以上宏值(其他的可能没有定义)。
如果math_errhandling设置了math_erreexception,则总是定义了FE_INVALID。
C++ 11
至少上述所有宏值都在<cfenv>中定义(即使实现不支持)。