Подтвердить что ты не робот

C комплексное число и printf

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Вывод:

0.000000+1.000000i

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

Ответ 3

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

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

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

Ответ 4

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

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

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

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