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.000000i

отметим, что i В конце.


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

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

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