
game boy
¿Cómo imprimir (con printf) un número complejo? Por ejemplo, si tengo este código:
#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;
}
… ¿qué especificadores de conversión (o algo más) debo usar en lugar de “???”
printf("%f + i%f\n", creal(result), cimag(result));
No creo que haya un especificador de formato específico para el tipo complejo C99.
Dejar %+f
elige el signo correcto para ti para la parte imaginaria:
printf("%f%+fi\n", crealf(I), cimagf(I));
Producción:
0.000000+1.000000i
Tenga en cuenta que i
está al final.
Debido a que el número complejo se almacena como dos números reales uno al lado del otro en la memoria, haciendo
printf("%g + i%g\n", result);
funcionará también, pero genera advertencias del compilador con gcc porque el tipo y la cantidad de parámetros no coinciden con el formato. Hago esto en caso de apuro cuando depuro, pero no lo hago en el código de producción.
Usando GNU C, esto funciona:
printf("%f %f\n", complexnum);
O, si desea que se imprima un sufijo de “i” después de la parte imaginaria:
printf("%f %fi\n", complexnum);