命名空间
变体
操作

虚数

来自 cppreference.com
< c‎ | numeric‎ | complex
在头文件 <complex.h> 中定义
#define imaginary _Imaginary
(自 C99)

此宏扩展为关键字 _Imaginary

这是一个方便的宏,它使使用 float imaginarydouble imaginarylong double imaginary 作为编写三种纯虚数 C 类型 float _Imaginarydouble _Imaginarylong double _Imaginary 的替代方式成为可能。

与 C 中的任何纯虚数支持一样,此宏仅在支持虚数时才定义。

定义了 __STDC_IEC_559_COMPLEX__ 的编译器不需要支持虚数。POSIX 建议检查宏 _Imaginary_I 是否定义来识别虚数支持。

(自 C99)
(直到 C11)

如果定义了 __STDC_IEC_559_COMPLEX__,则支持虚数。

(自 C11)

内容

[编辑] 备注

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

到目前为止,只知道 Oracle C 编译器实现了虚数类型。

[编辑] 示例

#include <stdio.h>
#include <complex.h>
 
int main(void)
{
    double imaginary i = -2.0*I; // pure imaginary
    double f = 1.0; // pure real
    double complex z = f + i; // complex number
    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)

[编辑] 另请参见

complex 类型宏
(关键字宏) [编辑]