Spec-Zone.ru › C

imaginary

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

Пример

#include <stdio.h>
#include <complex.h>

int main(void)
{
    double imaginary i = -2.0*I; // pure imaginary
    double f = 1.0; // pure real
    double complex z = f + i; // complex number
    printf("z = %.1f%+.1fi\n", creal(z), cimag(z));
}

Вывод:

z = 1.0-2.0i

Ссылки

  • Стандарт C17 (ISO/IEC 9899:2018):
    • 7.3.1/5 мнимые числа (стр. 136)
    • G.6/1 мнимые числа (стр. 391–392)
  • Стандарт C11 (ISO/IEC 9899:2011):
    • 7.3.1/5 мнимые числа (стр. 188)
    • G.6/1 мнимые числа (стр. 537)
  • Стандарт C99 (ISO/IEC 9899:1999):
    • 7.3.1/3 мнимые числа (стр. 170)
    • G.6/1 мнимые числа (стр. 472)

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/numeric/complex/imaginary

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API