wake-up-neo.com

C komplexe nummer und printf

Wie druckt man (mit printf) eine komplexe Nummer? Wenn ich beispielsweise diesen Code habe:

#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;
}

..was Konvertierungsspezifizierer (oder etwas anderes) sollte ich anstelle von "???"

43
gameboy
printf("%f + i%f\n", creal(result), cimag(result));

Ich glaube nicht, dass es einen speziellen Formatbezeichner für den komplexen C99-Typ gibt.

51
John Calsbeek

Überlassen Sie %+f das richtige Zeichen für den Imaginärteil:

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

Ausgabe:

0.000000+1.000000i

Beachten Sie, dass i am Ende ist.

9
levif

Weil die komplexe Zahl als zwei reelle Zahlen hintereinander im Speicher abgelegt wird

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

funktioniert ebenfalls, generiert jedoch Compiler-Warnungen mit gcc, da der Typ und die Anzahl der Parameter nicht mit dem Format übereinstimmen. Ich mache dies beim Debuggen zur Not, aber nicht im Produktionscode.

1
Kipp Cannon

Mit GNU C funktioniert das:

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

Oder wenn Sie nach dem Imaginärteil ein Suffix von "i" drucken möchten:

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