I
|
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
|
(C99)
|
la constante d'unité imaginaire i
(macro constante) |
|
(C99)
|
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
|
|