Namespaces
Variants

_Imaginary_I

From cppreference.net
Défini dans l'en-tête <complex.h>
#define _Imaginary_I /* non spécifié */
(depuis C99)

La macro _Imaginary_I s'étend à une valeur de type const float _Imaginary avec la valeur de l'unité imaginaire.

Comme pour toute prise en charge des nombres purement imaginaires en C, cette macro n'est définie que si les nombres imaginaires sont pris en charge.

Un compilateur qui définit __STDC_IEC_559_COMPLEX__ n'est pas obligé de prendre en charge les nombres imaginaires. POSIX recommande de vérifier si la macro _Imaginary_I est définie pour identifier la prise en charge des nombres imaginaires.

(depuis C99)
(jusqu'à C11)

Les nombres imaginaires sont pris en charge si __STDC_IEC_559_COMPLEX__ est défini.

(depuis C11)

Table des matières

Notes

Cette macro permet d'assembler de manière précise un nombre complexe à partir de ses composantes réelle et imaginaire, par exemple avec ( double complex ) ( ( double ) x + _Imaginary_I * ( double ) y ) . Ce modèle a été standardisé dans C11 sous le nom de macro CMPLX . Notez que si _Complex_I est utilisé à la place, cette expression est autorisée à convertir un zéro négatif en zéro positif dans la position imaginaire.

Exemple

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

Sortie :

z1 = 0.0+Infi 
z2 = NaN+Infi

Références

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

Voir aussi

constante de l'unité imaginaire i
(constante macro)
(C99)
constante de l'unité complexe ou imaginaire i
(constante macro)