# imaginary

< c‎ | numeric‎ | complex

定义于头文件 `<complex.h>` |  |
#define imaginary _Imaginary |  | (C99 起)

此宏展开成关键词 _Imaginary 。

这是一个便利宏，使你能用 float imaginary 、 double imaginary 及 long double imaginary 作为书写三种纯虚数 C 类型 float _Imaginary 、 double _Imaginary 以及 long double _Imaginary 的替用方式。

同 C 中的任意纯虚数支持，仅若支持虚数才定义此宏。

推荐编译器定义 __STDC_IEC_559_COMPLEX__ ，但并不强制要求其支持虚数。 POSIX 推荐检查是否定义宏 _Imaginary_I 以鉴别是否支持虚数。 | (C99 起) (C11 前)
若定义 __STDC_IEC_559_COMPLEX__ ，则支持虚数。 | (C11 起)

### 注意

允许程序取消定义，而且可在之后重定义 imaginary 宏。

### 示例

    #include <stdio.h>
    #include <complex.h>

    int main(void)
    {
        double imaginary i = 2.0*I; // 纯虚数
        double f = 1.0; // 纯实数
        double complex z = f + i; // 复数
        printf("z = %.1f%+.1fi\n", creal(z), cimag(z));
    }

输出：

    z = 1.0+2.0i

### 引用

- C11 标准（ISO/IEC 9899:2011）：

  - 7.3.1/5 imaginary (p: 188)

  - G.6/1 imaginary (p: 537)

- C99 标准（ISO/IEC 9899:1999）：

  - 7.3.1/3 imaginary (p: 170)

  - G.6/1 imaginary (p: 472)

### 参阅

complex (C99) | 复数类型宏 (关键词宏)