CMPLXF, CMPLX, CMPLXL

来自cppreference.com
< c‎ | numeric‎ | complex
定义于头文件 <complex.h>
float complex       CMPLXF( float real, float imag );
double complex      CMPLX( double real, double imag );
long double complex CMPLXL( long double real, long double imag );

每一个宏展开成求指定复数类型值的表达式,其实部值为real(转换成指定参数类型),而其虚部值为imag(转换成指定参数类型)。

该表达式适合用作有静态或线程期间存储的对象的初始化器,只要表达式realimag都同样适合。

目录

[编辑] 参数

real - 待返回复数的实部
imag - 待返回复数的虚部

[编辑] 返回值

realimag作为实部和虚部组合而成的复数。

[编辑] 注意

这些宏定义得像是已经支持虚数类型一般(即使实际情况相反,不支持虚数类型,而_Imaginary_I未定义),并像是下面这般定义:

#define CMPLX(x, y) ((double complex)((double)(x) + _Imaginary_I * (double)(y)))
#define CMPLXF(x, y) ((float complex)((float)(x) + _Imaginary_I * (float)(y)))
#define CMPLXL(x, y) ((long double complex)((long double)(x) + \
                      _Imaginary_I * (long double)(y)))

[编辑] 示例

#include <stdio.h>
#include <complex.h>
 
int main(void)
{
    double complex z = CMPLX(0.0, -0.0);
    printf("z = %.1f%+.1fi\n", creal(z), cimag(z));
}

输出:

z = 0.0-0.0i

[编辑] 参考

  • C11 standard (ISO/IEC 9899:2011):
  • 7.3.9.3 The CMPLX macros (p: 197)

[编辑] 参阅

虚数单位常量i
(宏常量) [edit]
complexC++文档