Namespaces
Variants

_Imaginary_I

From cppreference.net
定义于头文件 <complex.h>
#define _Imaginary_I /* 未指定 */
(C99 起)

_Imaginary_I 宏展开为类型 const float _Imaginary 的值,其值为虚数单位。

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

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

(since C99)
(until C11)

若定义了 __STDC_IEC_559_COMPLEX__ 则支持虚数。

(since C11)

目录

注释

该宏提供了一种精确构建复数的方式,通过其实部和虚部进行组合,例如 ( double complex ) ( ( double ) x + _Imaginary_I * ( double ) y ) 。该模式在C11标准中被标准化为宏 CMPLX 。需注意,若使用 _Complex_I 替代,该表达式允许将虚部位置的负零转换为正零。

示例

#include <stdio.h>
#include <complex.h>
#include <math.h>
int main(void)
{
    double complex z1 = 0.0 + INFINITY * _Imaginary_I;
    printf("z1 = %.1f%+.1fi\n", creal(z1), cimag(z1));
    double complex z2 = 0.0 + INFINITY * _Complex_I;
    printf("z2 = %.1f%+.1fi\n", creal(z2), cimag(z2));
}

输出:

z1 = 0.0+Infi 
z2 = NaN+Infi

参考文献

  • C11 标准 (ISO/IEC 9899:2011):
  • 7.3.1/5 _Imaginary_I (页: 188)
  • G.6/1 _Imaginary_I (页: 537)
  • C99 标准 (ISO/IEC 9899:1999):
  • 7.3.1/3 _Imaginary_I (页: 170)
  • G.6/1 _Imaginary_I (页: 472)

参见

复数单位常量 i
(宏常量)
(C99)
复数或虚数单位常量 i
(宏常量)