Ответ 1
printf("%f + i%f\n", creal(result), cimag(result));
Я не верю, что существует специальный спецификатор формата для сложного типа C99.
Как напечатать (с printf) комплексное число? Например, если у меня есть этот код:
#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;
}
.. какие параметры преобразования (или что-то еще) следует использовать вместо "???"
printf("%f + i%f\n", creal(result), cimag(result));
Я не верю, что существует специальный спецификатор формата для сложного типа C99.
Пусть %+f
выберите правильный знак для мнимой части:
printf("%f%+fi\n", crealf(I), cimagf(I));
Вывод:
0.000000+1.000000i
Обратите внимание, что i
находится в конце.
Поскольку комплексное число хранится в памяти как два реальных числа, делая
printf("%g + i%g\n", result);
также будет работать, но генерирует предупреждения компилятора с помощью gcc, потому что тип и количество параметров не соответствуют формату. Я делаю это в крайнем случае при отладке, но не делаю этого в производственном коде.
Используя GNU C, это работает:
printf("%f %f\n", complexnum);
Или, если вы хотите, чтобы суффикс "i" печатался после мнимой части:
printf("%f %fi\n", complexnum);