C
数值 | Numerics

_Imaginary_I

_Imaginary_I

在头文件中定义
#define _Imaginary_I / *未指定* /(自C99以来)

_Imaginary_I宏用虚数单元的值展开为const float _Imaginary类型的值。

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

定义__STDC_IEC_559_COMPLEX__的编译器不需要支持虚数。POSIX建议检查宏_Imaginary_I是否被定义为标识虚数支持。(自C99开始)(直到C11)
如果定义了__STDC_IEC_559_COMPLEX__,则支持虚数。(自C11以来)

注意

这个宏允许从其实部和虚部组装一个复数的精确方法,例如, (双复数)((double)x + _Imaginary_I *(double)y)。 这种模式在C11中被标准化为宏CMPLX。 请注意,如果使用_Complex_I,则允许此表达式将虚拟位置中的负零转换为正零。

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

输出:

z = 0.0-0.0i

参考

  • C11标准(ISO / IEC 9899:2011):

扩展内容

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