(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;
}
..代わりにどの変換指定子(または何か他のもの)を使用する必要があります "???"
printf("%f + i%f\n", creal(result), cimag(result));
C99複合型に特定のフォーマット指定子があるとは思いません。
%+f
虚数部の正しい記号を選択してください:
printf("%f%+fi\n", crealf(I), cimagf(I));
出力:
0.000000+1.000000i
i
が最後にあることに注意してください。
GNU Cを使用すると、これは機能します:
printf("%f %f\n", complexnum);
または、虚数部の後に「i」のサフィックスを印刷したい場合:
printf("%f %fi\n", complexnum);
複素数は2つの実数として連続してメモリに格納されるため、
printf("%g + i%g\n", result);
同様に動作しますが、パラメータのタイプと数がフォーマットと一致しないため、gccでコンパイラ警告が生成されます。デバッグ時にはピンチでこれを行いますが、製品コードでは行いません。