©
本文档使用 PHP中文网手册 发布
在头文件<complex.h>中定义 | ||
---|---|---|
#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):
7.3.1 / 5 _Imaginary_I(p:188)
G.6 / 1 _Imaginary_I(p:537)
C99标准(ISO / IEC 9899:1999):
7.3.1 / 3 _Imaginary_I(p:170)
G.6 / 1 _Imaginary_I(p:472)
_Complex_I(C99) | 复数单位常数i(宏常数) |
---|---|
I (C99) | 复数或虚数单位常数i(宏常数) |