50

複素数を ( 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;
}

..代わりにどの変換指定子 (または何か他のもの) を使用する必要がありますか?

4

4 に答える 4

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

C99 複合型に特定の書式指定子があるとは思えません。

于 2010-11-04T17:33:40.357 に答える
18

%+f虚部の正しい符号を選択​​してみましょう。

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

出力:

0.000000+1.000000i

i末尾にあることに注意してください。

于 2016-11-05T15:06:29.003 に答える
-1

複素数は 2 つの実数としてメモリに連続して格納されるため、次のようにします。

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

同様に機能しますが、パラメーターの型と数が形式と一致しないため、gcc でコンパイラの警告が生成されます。私はデバッグ時にピンチでこれを行いますが、製品コードでは行いません。

于 2012-11-22T19:59:11.007 に答える