더북(TheBook)

5.3.1 복소수 상수

C 플랫폼이라고 해서 모두 복소수 타입을 지원하는 것은 아니다. 현재 플랫폼에서 복소수를 지원하는지 확인하려면 __STDC_NO_COMPLEX__를 확인해 보면 된다. 복소수 타입을 제대로 지원하려면 complex.h 헤더 파일을 인클루드해야 한다. 수학 함수를 사용하기 위해 tgmath.h를 인클루드했다면 이 헤더도 함께 인클루드된다.

아쉽게도 C 언어에는 복소수 타입 상수를 지정하는 리터럴이 없다. 복소수 타입을 쉽게 다루기 위한 매크로(macro) 몇 가지만 제공할 뿐이다.5

복소수 값을 표현하기 위한 첫 번째 방법은 CMPLX 매크로를 사용하는 것이다. 이 매크로는 복소수의 실수부와 허수부를 표현하는 부동 소수점 값 두 개로 구성된다. 예를 들어 CMPLX(0.5, 0.5)는 실수부와 허수부의 값이 절반인 double complex 값이다. 이런 식으로 float complex에 대한 CMPLXFlong double complex에 대한 CMPLXL도 있다.

또 다른 방법은 I 매크로를 사용하는 것으로 CMPLX 매크로보다 간편하다. 이 매크로는 I*I=-1을 만족하는 float complex 상수 값을 표현한다. I 매크로처럼 이름이 대문자 하나만으로 이루어진 매크로는 프로그램 전체에서 고정된 숫자를 표현할 때 주로 사용한다. 이렇게 한 문자로 된 이름은 문자 수가 제한되므로 그리 좋은 방법은 아니지만, 어쨌든 코드에서 대문자 I를 다른 용도로 사용하면 안 된다.

 

 


  5 매크로는 5.6.3절에서 정식으로 소개한다. 일단 여기서는 특정한 속성에 대해 컴파일러가 정한 이름이라는 정도만 알고 넘어가자.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.