Namespaces
Variants

imaginary

From cppreference.net
Определено в заголовочном файле <complex.h>
#define imaginary _Imaginary
(начиная с C99)

Этот макрос раскрывается в ключевое слово _Imaginary .

Это удобный макрос, который позволяет использовать float imaginary , double imaginary и long double imaginary в качестве альтернативного способа записи трёх чистых мнимых типов C float _Imaginary , double _Imaginary и long double _Imaginary

Как и в случае с любой поддержкой чисто мнимых чисел в C, этот макрос определен только если поддерживаются мнимые числа.

Компилятор, который определяет __STDC_IEC_559_COMPLEX__ не обязан поддерживать мнимые числа. POSIX рекомендует проверять, определён ли макрос _Imaginary_I для идентификации поддержки мнимых чисел.

(начиная с C99)
(до C11)

Мнимые числа поддерживаются, если __STDC_IEC_559_COMPLEX__ определён.

(начиная с C11)

Содержание

Примечания

Программам разрешено отменять и, возможно, переопределять макрос imaginary .

На сегодняшний день известно, что только компилятор Oracle C реализовал imaginary types.

Пример

#include <stdio.h>
#include <complex.h>
int main(void)
{
    double imaginary i = -2.0*I; // чисто мнимое число
    double f = 1.0; // чисто вещественное число
    double complex z = f + i; // комплексное число
    printf("z = %.1f%+.1fi\n", creal(z), cimag(z));
}

Вывод:

z = 1.0-2.0i

Ссылки

  • Стандарт C17 (ISO/IEC 9899:2018):
  • 7.3.1/5 imaginary (p: 136)
  • G.6/1 imaginary (p: 391-392)
  • Стандарт C11 (ISO/IEC 9899:2011):
  • 7.3.1/5 imaginary (стр: 188)
  • G.6/1 imaginary (стр: 537)
  • Стандарт C99 (ISO/IEC 9899:1999):
  • 7.3.1/3 imaginary (p: 170)
  • G.6/1 imaginary (p: 472)

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

(C99)
макрос типа complex
(макрос-ключевое слово)