web-dev-qa-db-fra.com

C nombre complexe et printf

Comment imprimer (avec printf) un nombre complexe? Par exemple, si j'ai ce code:

#include <stdio.h>
#include <complex.h>
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 chose) devrais-je utiliser à la place "???"

43
gameboy
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.

51
John Calsbeek

Laissez %+f choisir le bon signe pour vous pour la partie imaginaire:

printf("%f%+fi\n", crealf(I), cimagf(I));

Sortie:

0.000000+1.000000i

Notez que i est à la fin.

9
levif

Comme le nombre complexe est stocké sous forme de deux nombres réels dos à dos en mémoire,

printf("%g + i%g\n", result);

fonctionnera également, mais générera des avertissements du compilateur avec gcc car le type et le nombre de paramètres ne correspondent pas au format. Je le fais à la pincée lors du débogage mais ne le faites pas dans le code de production.

1
Kipp Cannon

En utilisant GNU C, cela fonctionne:

printf("%f %f\n", complexnum);

Ou, si vous voulez un suffixe "i" imprimé après la partie imaginaire:

printf("%f %fi\n", complexnum);
0
Lou