- 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 库 - feholdexcept() 函数
C 的fenv 库 feholdexcept() 函数用于执行可能引发异常的浮点运算,而不会中断程序的流程。
在程序编译成功后,我们可以恢复原始环境以恢复异常。
语法
以下是 feholdexcept() 函数的 C 库语法。
feholdexcept(fenv_t *envp);
参数
- 该函数接受一个指向 fenv_t 对象的指针,在清除标志(浮点运算)之前,当前环境将存储在此对象中。
返回值
此函数返回一个整数值,其含义如下:
零,如果程序正常运行。
非零,如果无法设置环境。
示例 1
feholdexcept()
#include <stdio.h> #include <fenv.h> int main() { fenv_t env; // Save and clear all exceptions feholdexcept(&env); // Restore the saved exceptions fesetenv(&env); printf("Exceptions restored.\n"); return 0; }
输出
上述代码产生以下结果:
Exceptions restored.
示例 2
下面的程序保存并清除异常以执行运算,而不会因除以零而停止,然后检查是否发生了此类异常。
#include <stdio.h> #include <fenv.h> int main() { fenv_t env; // Save and clear exceptions feholdexcept(&env); // Perform operations that may raise exception if (fetestexcept(FE_DIVBYZERO)) { printf("Division by zero occurred, but calculations continued.\n"); } // Restore the environment to handle exceptions properly fesetenv(&env); return 0; }
输出
执行上述代码后,我们将获得以下结果:
=== Code Execution Successful ===
c_library_fenv_h.htm
广告