Namespaces
Variants

I

From cppreference.net
헤더 파일에 정의됨 <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)

참조 항목

허수 단위 상수 i
(매크로 상수)
복소수 단위 상수 i
(매크로 상수)
(C11) (C11) (C11)
실수부와 허수부로 복소수 구성
(함수 매크로)
C++ 문서 for operator""i