C参考手册
数值 | Numerics
_Imaginary_I
在头文件<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(宏常数) |