Namespaces
Variants

_Imaginary_I

From cppreference.net
Определено в заголовочном файле <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 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)

Смотрите также

константа комплексной единицы i
(макроконстанта)
(C99)
константа комплексной или мнимой единицы i
(макроконстанта)