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