_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(宏常数) |