- C 标准库
- C 库 - 首页
- C 库 - <assert.h>
- C 库 - <complex.h>
- C 库 - <ctype.h>
- C 库 - <errno.h>
- C 库 - <fenv.h>
- C 库 - <float.h>
- C 库 - <inttypes.h>
- C 库 - <iso646.h>
- C 库 - <limits.h>
- C 库 - <locale.h>
- C 库 - <math.h>
- C 库 - <setjmp.h>
- C 库 - <signal.h>
- C 库 - <stdalign.h>
- C 库 - <stdarg.h>
- C 库 - <stdbool.h>
- C 库 - <stddef.h>
- C 库 - <stdio.h>
- C 库 - <stdlib.h>
- C 库 - <string.h>
- C 库 - <tgmath.h>
- C 库 - <time.h>
- C 库 - <wctype.h>
- C 标准库资源
- C 库 - 快速指南
- C 库 - 有用资源
- C 库 - 讨论
C 库 - feclearexcept() 函数
C 的fenv库feclearexcept()函数用于清除由位掩码参数excepts指定的浮点环境中的浮点异常。如果except等于'0',则返回0。
位掩码参数excepts是浮点异常宏(如FE_DIVBYZERO、FE_INEXACT、FE_INVALID、FE_OVERFLOW、FE_UNDERFLOW和FE_ALL_EXCEPT)的按位或组合。
语法
以下是feclearexcept()函数的C库语法:
int feclearexcept(int excepts);
参数
此函数接受一个参数:
-
excepts - 它表示要清除的异常标志的位掩码列表。
返回值
如果所有异常都已清除,则此函数返回'0'。否则,如果发生错误,则返回非零值。
示例 1
以下是用C编写的基本程序,用于演示feclearexcept()函数的使用。
#include <stdio.h> #include <math.h> #include <fenv.h> int main() { // Clear all floating-point exceptions. feclearexcept(FE_ALL_EXCEPT); // floating-point operation. double result = sqrt(-1.0); printf("%lf \n", result); // If floating-point exceptions were raised. if (fetestexcept(FE_INVALID)) { // Handle the invalid operation exception. printf("Invalid floating-point operation occurred.\n"); } else { printf("No Invalid floating-point operation occurred. \n"); } return 0; }
输出
如果浮点数无效,我们将得到以下输出:
-nan Invalid floating-point operation occurred.
示例 2
传递excepts值为0
在以下示例中,如果我们传递except值为0,则feclearexcept()函数返回0。
#include <stdio.h> #include <math.h> #include <fenv.h> int main() { // Clear all floating-point exceptions. feclearexcept(FE_ALL_EXCEPT); int excepts = 0; int res = feclearexcept(excepts); printf("%d", res); }
输出
以下是输出:
0
示例 3
下面的程序执行浮点除法运算,如果我们尝试除以0,则会引发除以零异常。
#include <stdio.h> #include <fenv.h> int main() { // Clear following floating-point exceptions. feclearexcept(FE_DIVBYZERO | FE_OVERFLOW); //divide-by-zero exception. double result = 1.0 / 0.0; // Check if the divide-by-zero exception was raised. if (fetestexcept(FE_DIVBYZERO)) { printf("Divide-by-zero exception.\n"); } else { printf("No divide-by-zero exception.\n"); } // Check if the overflow exception was raised. if (fetestexcept(FE_OVERFLOW)) { printf("Overflow exception.\n"); } else { printf("No overflow exception.\n"); } return 0; }
输出
以下是输出:
Divide-by-zero exception. No overflow exception.
c_library_fenv_h.htm
广告