_Imaginary_I
Определено в заголовке <complex.h> | ||
|---|---|---|
#define _Imaginary_I /* unspecified */ | (с C99) |
Макрос _Imaginary_I расширяется до значения типа const float _Imaginary со значением мнимой единицы.
Как и любая поддержка чисто мнимых чисел в C, этот макрос определён только при поддержке мнимых чисел.
| Компилятор, который определяет |
(с C99) (до C11) |
| Мнимые числа поддерживаются, если определён | (с 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)
См. также
|
(C99) | константа комплексной единицы i (макроконстанта) |
|
(C99) | константа комплексной или мнимой единицы i (макроконстанта) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/numeric/complex/Imaginary_I