С комплексное число и принтф - PullRequest
44 голосов
/ 04 ноября 2010

Как напечатать (с 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;
}

.. какие спецификаторы преобразования (или что-то еще) я должен использовать вместо "???"

Ответы [ 4 ]

53 голосов
/ 04 ноября 2010
printf("%f + i%f\n", creal(result), cimag(result));

Я не верю, что есть специфический спецификатор формата для сложного типа C99.

14 голосов
/ 05 ноября 2016

Позвольте %+f выбрать для вас правильный знак для мнимой части:

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

Вывод:

0.000000+1.000000i

Обратите внимание, что i находится в конце.

0 голосов
/ 24 января 2019

Используя GNU C, это работает:

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

Или, если вы хотите суффикс «i», напечатанный после мнимой части:

printf("%f %fi\n", complexnum);
0 голосов
/ 22 ноября 2012

Поскольку комплексное число сохраняется в памяти двумя действительными числами, выполняя

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

также будет работать, но генерирует предупреждения компилятора с помощью gcc, потому что тип и количество параметров не соответствуют формату. Я делаю это в крайнем случае при отладке, но не делаю это в рабочем коде.

...