Namespaces
Variants

imaginary

From cppreference.net
Definido en el encabezado <complex.h>
#define imaginary _Imaginary
(desde C99)

Esta macro se expande a la palabra clave _Imaginary .

Esta es una macro de conveniencia que permite usar float imaginary , double imaginary , y long double imaginary como una forma alternativa de escribir los tres tipos puramente imaginarios de C float _Imaginary , double _Imaginary , y long double _Imaginary

Al igual que con cualquier soporte de números puramente imaginarios en C, esta macro solo está definida si los números imaginarios son compatibles.

Un compilador que define __STDC_IEC_559_COMPLEX__ no está obligado a admitir números imaginarios. POSIX recomienda verificar si la macro _Imaginary_I está definida para identificar la compatibilidad con números imaginarios.

(desde C99)
(hasta C11)

Los números imaginarios son compatibles si __STDC_IEC_559_COMPLEX__ está definido.

(desde C11)

Contenidos

Notas

Los programas tienen permitido anular la definición y quizás redefinir la macro imaginary .

Hasta la fecha, solo se sabe que el compilador C de Oracle ha implementado tipos imaginarios.

Ejemplo

#include <stdio.h>
#include <complex.h>
int main(void)
{
    double imaginary i = -2.0*I; // imaginario puro
    double f = 1.0; // real puro
    double complex z = f + i; // número complejo
    printf("z = %.1f%+.1fi\n", creal(z), cimag(z));
}

Salida:

z = 1.0-2.0i

Referencias

  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.3.1/5 imaginary (p: 136)
  • G.6/1 imaginary (p: 391-392)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.3.1/5 imaginary (p: 188)
  • G.6/1 imaginary (p: 537)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.3.1/3 imaginary (p: 170)
  • G.6/1 imaginary (p: 472)

Véase también

(C99)
macro de tipo complex
(macro de palabra clave)