宏常量-异常
FE_DIVBYZERO
宏 <cfenv>
int
极点错误异常
此宏扩展为int类型的值,用于标识支持错误引发的浮点异常。
极点错误发生在操作的结果是渐近无穷大的时候,比如除以零或log(0.0)。
它被定义为一个精确为二次幂的值,允许多个浮点异常组合(使用按位OR操作符:|)为单个值,见下面异常表.
某些库实现可能支持更多的浮点异常值(其对应的宏也以FE_开头)。
C99:
在<fenv.h>中,库可以只定义它们支持的下面异常表的宏值(其他的可能不定义)。
如果
math_errhandling具有MATH_ERREXCEPT设置,则始终定义FE_DIVBYZERO。
C++11:
至少上面所有的宏值都在<cfenv>中定义(即使实现不支持)。
FE_INEXACT
宏 <cfenv>
int
不精确的结果异常
这个宏扩展为一个int类型的值,用于标识在不精确的结果上引发的浮点异常。
当操作的返回类型不能准确地表示结果时(例如大多数实现上的1.0/3.0或sqrt(2.0)),
或者由于其他原因函数不能产生准确的结果时,将引发不精确异常。
它被定义为一个精确为二次幂的值,允许多个浮点异常组合(使用按位OR操作符:|)为单个值,见下面异常表.
某些库实现可能支持更多的浮点异常值(其对应的宏也以FE_开头)。
C99:
在<fenv.h>中,库可以只定义它们支持的下面异常表的宏值(其他的可能不定义)。
C++11:
至少下面所有的宏值都在<cfenv>中定义(即使实现不支持)。
FE_INVALID
宏 <cfenv>
int
无效的参数异常
此宏扩展为int类型的值,用于标识在无效参数上引发的浮点异常。
将引发无效的参数异常,以表明传递给函数的参数超出了其域(即,函数不是为该值定义的),例如sqrt(-1.0)。
引发此异常的函数返回的值是未指定的.
它被定义为一个精确为二次幂的值,允许多个浮点异常组合(使用按位OR操作符:|)为单个值,见下面异常表.
某些库实现可能支持更多的浮点异常值(其对应的宏也以FE_开头)。
C99:
在<fenv.h>中,库可以只定义它们支持的下面异常表的宏值(其他的可能不定义)。
如果
math_errhandling具有MATH_ERREXCEPT设置,则始终定义FE_INVALID。
C++11:
至少下面所有的宏值都在<cfenv>中定义(即使实现不支持)。
FE_OVERFLOW
宏 <cfenv>
int
溢出范围错误异常
此宏扩展为int类型的值,用于标识溢出范围错误引发的浮点异常。
当操作的结果不能表示为其返回类型的值时,就会发生溢出范围错误,因为其值太大(带有正号或负号)。
在默认取整模式生效时溢出的操作将返回正的或负的HUGE_VAL(或HUGE_VALF或HUGE_VALL)。
它被定义为一个精确为二次幂的值,允许多个浮点异常组合(使用按位OR操作符:|)为单个值,见下面异常表.
某些库实现可能支持更多的浮点异常值(其对应的宏也以FE_开头)。
C99:
在<fenv.h>中,库可以只定义它们支持的下面异常表的宏值(其他的可能不定义)。
如果
math_errhandling具有MATH_ERREXCEPT设置,则始终定义FE_OVERFLOW 。
C++11:
至少下面所有的宏值都在<cfenv>中定义(即使实现不支持)。
FE_UNDERFLOW
宏 <cfenv>
int
下溢范围错误异常
此宏扩展为int类型的值,用于标识下溢范围错误引发的浮点异常。
当操作的结果不能表示为其返回类型的值,因为其值太小(带有正号或负号)时,就会发生下溢范围错误。
溢出的操作返回一个未指定的值,其大小不大于最小的标准化正数。
操作是否引发此异常是由实现定义的:不需要任何操作来引发此异常,但实现可以选择这样做。
它被定义为一个精确为二次幂的值,允许多个浮点异常组合(使用按位OR操作符:|)为单个值,见下面异常表.
某些库实现可能支持更多的浮点异常值(其对应的宏也以FE_开头)。
C99:
在<fenv.h>中,库可以只定义它们支持的下面异常表的宏值(其他的可能不定义)。
C++11:
至少下面所有的宏值都在<cfenv>中定义(即使实现不支持)。
FE_ALL_EXCEPT
宏 <cfenv>
int
全部异常
异常表: