C 中的 <complex.h> 头文件

2025 年 1 月 7 日 | 阅读 3 分钟

complex.h 头文件被大多数 C 程序用来执行复数运算和转换。这个头文件包含在 C99 标准中。

C++ 标准库包含一个头文件 complex<T>,它实现复数值作为模板类,而 C 中是 complex.<h>。

<complex.h> 相关的宏

下面给出了一些来自 <complex.h> 的宏。左侧的值解释了 complex.h 中的宏,右侧的值表示这些宏使用 C99 标准化关键字(_Imaginary, _Complexvalue)的扩展。

宏名称展开为
复杂_complex
Imaginary_Imaginary
_complex_I(const float _Complexvalue) i
_imaginay_I(const float _Imaginaryvalue) i

示例

让我们举一个例子来说明在 C 中使用 complex.h 头文件的用法。

输出

z = 1.8+7.9i

说明

  • cmplx() 方法通过传递实部和虚部参数来生成复数对象。此方法返回复数对象。
  • creal() 方法返回复数的实部。
  • cimag() 方法返回复数的虚部。
  • 如果实部和虚部都属于 float 类型,我们可以使用 cmplxf() 函数来构造复数,并使用 crealf()cimagf() 过程来获取实部和虚部。
  • 如果实部和虚部都属于 long double 类型,我们使用 cmplxl() 函数来构造复数,并使用 creall() 和 cimagl() 过程来提取实部和虚部。

示例

让我们举一个例子来说明在 C 中使用 complex.h 头文件的用法。

输出

z1 = 3.9+4.8i

说明

在此示例中,使用 printf 函数显示复数 z1。以下是格式说明符的解释:

  • "z1 = ":此字符串将按原样显示。
  • %.1f:使用此格式说明符在小数点后显示一位数字的复数实部 (creal(z1))。
  • %+.1fi:上面的格式说明符用于显示复数的虚部 (cimag(z1)。 %+ 用于显示虚部的符号,.1fi 表示虚部小数点后有一位数字。

<complex.h> 头文件还包含几个用于处理复数的内置函数。在此示例中,“参数” 指的是复数对象。

函数描述
loat cabsf(float complex argument)当给定单精度浮点数(float 类型)时,cabsf() 计算复数的模(绝对值)。
它接受一个 float complex 参数,并返回该参数的模作为 float。
double cabs(double complex argument)当输入是双精度浮点值(double 类型)时,cabs() 计算复数的模。
它接受一个 double complex 参数,并返回其模作为 double。
long double cabsl(long double complex argument)当给定长双精度浮点值(long double 类型)时,cabsl() 计算复数的模。
它接受一个 long double complex 输入,并返回其模作为 long double。
float complex cacosf(float complex arg)当给定单精度浮点值(float 类型)时,C 中的 cacosf() 函数计算复数变量的复数反余弦。结果作为复数返回。
double complex cacos(double complex arg)当输入是双精度浮点数(double 类型)时,C 中的 cacos() 函数计算复数的复数反余弦。结果作为复数返回。
float complex cacoshf(float complex arg)cacoshf() 接受一个 float complex 参数。它计算给定复数的复数反双曲余弦。输入和输出都采用单精度浮点数格式(float)。
float cargf(float complex arg)当输入参数是单精度浮点整数(float 类型)时,C 中的 cargf() 函数计算复数的参数(也称为相位或角度)的主值。它将结果作为单精度浮点数(float)返回。