- 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 库 - fesetexceptflag() 函数
C 的fenv 库 fesetexceptflag() 函数用于通过 'excepts' 参数设置指定浮点异常标志的状态。此参数是浮点异常宏的按位或组合,例如FE_DIVBYZERO、FE_INEXACT、FE_INVALID、FE_OVERFLOW 和 FE_UNDERFLOW。
语法
以下是 fesetexceptflag() 函数的 C 库语法 -
int fesetexceptflag(const fexcept_t *flagp, int excepts);
参数
此函数接受以下参数 -
-
flagp - 它表示指向 'fexcept_t' 对象的指针,标志将存储或从中读取。
excepts - 它表示要设置的异常标志的位掩码列表。
返回值
如果此函数成功获取指定异常的状态,则返回 0,否则返回非零值。
示例 1
以下是用 fesetexceptflag() 设置单个浮点异常标志的基本 C 示例。
#include <stdio.h> #include <fenv.h> int main() { // Declare a variable to hold the exception flag fexcept_t flag; // Set the FE_OVERFLOW exception flag if (fesetexceptflag(&flag, FE_OVERFLOW) != 0) { printf("Failed to set the FE_OVERFLOW exception flag.\n"); return 1; } else { printf("Successfully set the FE_OVERFLOW exception flag.\n"); } return 0; }
输出
以下是输出 -
Successfully set the FE_OVERFLOW exception flag.
示例 2
以下 C 程序使用 fesetexceptflag() 设置 FE_INVALID 异常标志。
#include <stdio.h> #include <fenv.h> int main() { // Declare a variable to hold the exception flag fexcept_t flag; // Set the FE_OVERFLOW exception flag if (fesetexceptflag(&flag, FE_INVALID) != 0) { printf("Failed to set the FE_INVALID exception flag.\n"); return 1; } else { printf("Successfully set the FE_INVALID exception flag.\n"); } return 0; }
输出
以下是输出 -
Successfully set the FE_INVALID exception flag.
示例 3
这是另一个设置 FE_INVALID 异常标志,然后检查它是否已成功设置的示例。
#include <stdio.h> #include <fenv.h> int main() { fexcept_t flag; // Set the FE_INVALID exception flag if (fesetexceptflag(&flag, FE_INVALID) != 0) { printf("Failed to set the FE_INVALID exception flag.\n"); return 1; } else { printf("Successfully set the FE_INVALID exception flag.\n"); } // Perform an invalid floating-point operation to trigger FE_INVALID double result = 1.0 / 0.0; // Check if FE_INVALID is raised if (fetestexcept(FE_INVALID)) { printf("FE_INVALID exception is raised due to division by zero.\n"); } else { printf("FE_INVALID exception is not raised.\n"); } return 0; }
输出
以下是输出 -
Successfully set the FE_INVALID exception flag. FE_INVALID exception is not raised.
c_library_fenv_h.htm
广告