Namespaces
Variants

imaginary

From cppreference.net
定义于头文件 <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 是否被定义来识别虚数支持。

(since C99)
(until C11)

若定义了 __STDC_IEC_559_COMPLEX__ 则支持虚数。

(since C11)

目录

注释

程序允许取消定义并可能重新定义 imaginary 宏。

迄今为止,已知仅有 Oracle C 编译器实现了虚数类型。

示例

#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

参考文献

  • C17 标准 (ISO/IEC 9899:2018):
  • 7.3.1/5 imaginary (p: 136)
  • G.6/1 imaginary (p: 391-392)
  • 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)

参见

(C99)
复数类型宏
(关键字宏)