Comment imprimer (avec printf) un nombre complexe? Par exemple, si j’ai ce code:
#include #include int main(void) { double complex dc1 = 3 + 2*I; double complex dc2 = 4 + 5*I; double complex result; result = dc1 + dc2; printf(" ??? \n", result); return 0; }
..Quels spécificateurs de conversion (ou autre) dois-je utiliser à la place “???”
printf("%f + i%f\n", creal(result), cimag(result));
Je ne crois pas qu’il existe un spécificateur de format spécifique pour le type complexe C99.
Laissez %+f
choisir le signe correct pour vous pour la partie imaginaire:
printf("%f%+fi\n", crealf(I), cimagf(I));
Sortie:
0.000000+1.000000i
Notez que i
à la fin.
Parce que le nombre complexe est stocké comme deux nombres réels dos à dos en mémoire, faisant
printf("%g + i%g\n", result);
fonctionnera également, mais génère des avertissements du compilateur avec gcc car le type et le nombre de parameters ne correspondent pas au format. Je le fais à la rigueur lors du débogage mais ne le fais pas dans le code de production.