- 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 库 - <tgmath.h>
C 库 <tgmath.h> 包含头文件 <math.h> 和 <complex.h>,并定义了各种类型的宏。当根据参数(类型)调用实数或复数函数时,此函数适用。
它允许计算机程序员表达与任何浮点类型(如 float、long、double 和 long double)一起工作的数学运算。我们可以使用单个函数名称来表示类型,并使代码更易于阅读。
语法
以下是 C 库头文件 <tgmath.h> 提供的各种内置函数的语法:
pow(var1, var2) Or, fmod(var1, var2) Or, sin(var1, var2) etc.
参数
上述语法使用各种函数,这些函数仅接受两个参数来表达数学表达式。例如 - 求两个数字的幂,获取三角函数值等。var1 和 var2 属于相同或不同的数据类型。
返回值类型
该函数根据传递给宏的参数类型返回。
请确保 <tgmath.h> 简化了代码维护,并借助类型通用宏使用数学运算。
示例 1
C 库头文件 <tgmath.h> 演示了函数 fmod(),它接受两个不同数据类型的参数并计算两个数字相除的余数。
#include <tgmath.h> #include <stdio.h> int main() { float f = 3.0f; double d = 3.0; // result is of type double double result = fmod(f, d); printf("The result of fmod(%f, %f) = %f\n", f, d, result); return 0; }
以上代码产生以下结果:
The result of fmod(3.000000, 3.000000) = 0.000000
示例 2
以下示例说明了 cabs() 函数的使用,该函数确定复数的绝对值并显示结果。
#include <tgmath.h> #include <complex.h> #include <stdio.h> int main() { float complex fc = 3.0f + 4.0f * I; double complex dc = 3.0 + 4.0 * I; long double complex ldc = 3.0l + 4.0l * I; // res_fc is of type float float res_fc = cabs(fc); // res_dc is of type double double res_dc = cabs(dc); // res_ldc is of type long double long double res_ldc = cabs(ldc); printf("cabs(%f + %fi) = %f\n", crealf(fc), cimagf(fc), res_fc); printf("cabs(%f + %fi) = %f\n", creal(dc), cimag(dc), res_dc); printf("cabs(%Lf + %Lfi) = %Lf\n", creall(ldc), cimagl(ldc), res_ldc); return 0; }
执行上述代码后,我们得到以下结果:
cabs(3.000000 + 4.000000i) = 5.000000 cabs(3.000000 + 4.000000i) = 5.000000 cabs(3.000000 + 4.000000i) = 5.000000
示例 3
这里,我们使用三角函数来表示数据类型的值:float、double 和 long double。
#include <tgmath.h> #include <stdio.h> int main() { float f = 3.0f; double d = 3.0; long double ld = 3.0l; // result_f is of type float double result_f = sin(f); // result_d is of type double double result_d = sin(d); // result_ld is of type long double double result_ld = sin(ld); printf("The value of float [sin(%f)] = %f\n", f, result_f); printf("The value of double [sin(%f)] = %f\n", d, result_d); printf("The value of long [double sin(%Lf)] = %f\n", ld, result_ld); return 0; }
执行上述代码后,我们得到以下结果:
The value of float [sin(3.000000)] = 0.141120 The value of double [sin(3.000000)] = 0.141120 The value of long [double sin(3.000000)] = 0.141120
广告