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