Nombre complexe C et printf

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.