I
|
헤더 파일에 정의됨
<complex.h>
|
||
|
#define I /* unspecified */
|
(C99부터) | |
I
매크로는
_Complex_I
또는
_Imaginary_I
로 확장됩니다. 구현체가 허수 타입을 지원하지 않는 경우, 이 매크로는 항상
_Complex_I
로 확장됩니다.
프로그램은 매크로 I 를 정의 해제하고, 이후 재정의할 수 있습니다.
목차 |
참고 사항
매크로의 이름이 수학에서 허수 단위의 이름인
i
로 지정되지 않은 이유는
i
라는 이름이 이미 많은 C 프로그램에서 루프 카운터 변수 등으로 사용되고 있었기 때문입니다.
매크로
I
는 종종
x
+
y
*
I
와 같은 표현식으로 복소수를 형성하는 데 사용됩니다.
만약
I
가
_Complex_I
로 정의된 경우, 이러한 표현식은
y
가
-0.0
일 때도 허수 성분이
+0.0
인 값을 생성할 수 있으며, 이는 branch cut을 갖는 복소수 함수에서 중요합니다. 매크로
CMPLX
는 복소수를 정확하게 구성하는 방법을 제공합니다.
GCC는 정수 리터럴에 접미사
i
를 사용하여 허수 상수를 지정할 수 있는 비표준 확장을 제공합니다:
1.0fi
,
1.0i
, 그리고
1.0li
는 GNU C에서 허수 단위입니다. 유사한 접근법이 C++14부터 표준 C++의 일부입니다 (
1.0if
,
1.0i
, 그리고
1.0il
는 C++에서 허수 단위입니다)
예제
#include <stdio.h> #include <complex.h> int main(void) { printf("I = %.1f%+.1fi\n", creal(I), cimag(I)); double complex z1 = I * I; // 허수 단위의 제곱 printf("I * I = %.1f%+.1fi\n", creal(z1), cimag(z1)); double complex z = 1.0 + 2.0*I; // C11 이전에 복소수를 형성하는 일반적인 방법 printf("z = %.1f%+.1fi\n", creal(z), cimag(z)); }
출력:
I = 0.0+1.0i I * I = -1.0+0.0i z = 1.0+2.0i
참고문헌
- C11 표준 (ISO/IEC 9899:2011):
-
- 7.3.1/6 I (p: 188)
-
- G.6/1 I (p: 537)
- C99 표준 (ISO/IEC 9899:1999):
-
- 7.3.1/4 I (p: 170)
-
- G.6/1 I (p: 472)
참조 항목
|
(C99)
|
허수 단위 상수 i
(매크로 상수) |
|
(C99)
|
복소수 단위 상수 i
(매크로 상수) |
|
(C11)
(C11)
(C11)
|
실수부와 허수부로 복소수 구성
(함수 매크로) |
|
C++ 문서
for
operator""i
|
|