Namespaces
Variants

I

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

La macro I se développe soit en _Complex_I soit en _Imaginary_I . Si l'implémentation ne prend pas en charge les types imaginaires, alors la macro se développe toujours en _Complex_I .

Un programme peut annuler la définition et peut-être ensuite redéfinir la macro I .

Table des matières

Notes

La macro n'est pas nommée i , qui est le nom de l'unité imaginaire en mathématiques, car le nom i était déjà utilisé dans de nombreux programmes C, par exemple comme variable de compteur de boucle.

La macro I est souvent utilisée pour former des nombres complexes, avec des expressions telles que x + y * I . Si I est définie comme _Complex_I , alors une telle expression peut créer une valeur avec une composante imaginaire +0.0 même lorsque y est -0.0 , ce qui est significatif pour les fonctions de nombres complexes avec des coupures de branche. La macro CMPLX fournit un moyen de construire un nombre complexe avec précision.

GCC fournit une extension non portable qui permet de spécifier des constantes imaginaires avec le suffixe i sur les littéraux entiers : 1.0fi , 1.0i , et 1.0li sont des unités imaginaires dans GNU C. Une approche similaire fait partie du C++ standard à partir de C++14 ( 1.0if , 1.0i , et 1.0il sont les unités imaginaires en C++)

Exemple

#include <stdio.h>
#include <complex.h>
int main(void)
{
    printf("I = %.1f%+.1fi\n", creal(I), cimag(I));
    double complex z1 = I * I;     // unité imaginaire au carré
    printf("I * I = %.1f%+.1fi\n", creal(z1), cimag(z1));
    double complex z = 1.0 + 2.0*I; // méthode habituelle pour former un nombre complexe avant C11
    printf("z = %.1f%+.1fi\n", creal(z), cimag(z));
}

Sortie :

I = 0.0+1.0i
I * I = -1.0+0.0i
z = 1.0+2.0i

Références

  • Norme C11 (ISO/CEI 9899:2011) :
  • 7.3.1/6 I (p: 188)
  • G.6/1 I (p: 537)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.3.1/4 I (p: 170)
  • G.6/1 I (p: 472)

Voir aussi

la constante d'unité imaginaire i
(macro constante)
la constante d'unité complexe i
(macro constante)
(C11) (C11) (C11)
construit un nombre complexe à partir de parties réelle et imaginaire
(macro fonction)
Documentation C++ pour operator""i