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;
}


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

663   3  

3 ответов:

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, потому что тип и количество параметров не соответствуют формату. Я делаю это в крайнем случае при отладке, но не делаю этого в производственном коде.

Comments

    Ничего не найдено.