_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/c/numeric/complex/Imaginary_I