Namespaces
Variants

_Imaginary_I

From cppreference.net
Definido en el encabezado <complex.h>
#define _Imaginary_I /* no especificado */
(desde C99)

La macro _Imaginary_I se expande a un valor de tipo const float _Imaginary con el valor de la unidad imaginaria.

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 el soporte de números imaginarios.

(desde C99)
(hasta C11)

Los números imaginarios se admiten si __STDC_IEC_559_COMPLEX__ está definido.

(desde C11)

Contenidos

Notas

Esta macro permite la forma precisa de ensamblar un número complejo a partir de sus componentes real e imaginario, por ejemplo con ( double complex ) ( ( double ) x + _Imaginary_I * ( double ) y ) . Este patrón fue estandarizado en C11 como la macro CMPLX . Nótese que si se utiliza _Complex_I en su lugar, esta expresión puede convertir cero negativo a cero positivo en la posición imaginaria.

Ejemplo

#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));
}

Salida:

z1 = 0.0+Infi 
z2 = NaN+Infi

Referencias

  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.3.1/5 _Imaginary_I (p: 188)
  • G.6/1 _Imaginary_I (p: 537)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.3.1/3 _Imaginary_I (p: 170)
  • G.6/1 _Imaginary_I (p: 472)

Véase también

la constante de unidad compleja i
(macro constante)
(C99)
la constante de unidad compleja o imaginaria i
(macro constante)