반응형
C복소수 및 프린트 f
( 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 complex type에 특정 포맷 지정자는 없는 것 같습니다.
허락하다%+f가상 부품에 대한 올바른 기호를 선택합니다.
printf("%f%+fi\n", crealf(I), cimagf(I));
출력:
0.000000+1.000000i
주의:i마지막이에요.
복소수는 2개의 실수로 메모리에 연속해서 저장되기 때문에
printf("%g + i%g\n", result);
는 동작하지만 파라미터의 종류와 수가 포맷과 일치하지 않기 때문에 gcc를 사용하여 컴파일러 경고를 생성합니다.디버깅할 때는 이 작업을 수행하지만 프로덕션 코드에서는 수행하지 않습니다.
GNU C 를 사용하면, 다음과 같이 동작합니다.
printf("%f %f\n", complexnum);
또는 "i"의 접미사를 가상 부분 뒤에 인쇄하려면 다음 절차를 따릅니다.
printf("%f %fi\n", complexnum);
언급URL : https://stackoverflow.com/questions/4099433/c-complex-number-and-printf
반응형
'source' 카테고리의 다른 글
| C/C++의 정수 분할의 빠른 상한 (0) | 2022.08.30 |
|---|---|
| Clibcurl이 출력을 문자열로 가져옵니다. (0) | 2022.08.30 |
| 익명 클래스에서 최종 변수만 액세스할 수 있는 이유는 무엇입니까? (0) | 2022.08.30 |
| 파일 포인터(FILE*fp)를 파일 기술자(int fd)로 변환하려면 어떻게 해야 합니까? (0) | 2022.08.30 |
| void*의 의미와 사용방법 (0) | 2022.08.30 |