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;
// 保存并清除所有异常
feholdexcept(&env);
// 恢复已保存的异常
fesetenv(&env);
printf("异常已恢复。");
return 0;
}
输出
上述代码产生以下结果 -
异常已恢复。
示例 2
下面的程序保存并清除异常,以便在除以零的情况下执行操作而不停止,然后检查是否发生了此类异常。
#include <stdio.h>
#include <fenv.h>
int main() {
fenv_t env;
// 保存并清除异常
feholdexcept(&env);
// 执行可能引发异常的操作
if (fetestexcept(FE_DIVBYZERO)) {
printf("Division by zero occurred, but calculations continued.");
}
// 恢复环境以正确处理异常
fesetenv(&env);
return 0;
}
输出
执行上述代码后,我们得到以下结果 -
=== Code Execution Successful ===

