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