名前空間
変種
操作

_Imaginary_I

From cppreference.com
< c‎ | numeric‎ | complex
ヘッダー <complex.h> で定義
#define _Imaginary_I /* 未指定 */
(C99以降)

_Imaginary_I マクロは、虚数単位の値を持つ const float _Imaginary 型の値に展開されます。

Cにおける純虚数サポートと同様に、このマクロは虚数サポートが有効な場合にのみ定義されます。

コンパイラは、__STDC_IEC_559_COMPLEX__ を定義していても、虚数サポートを必要とするわけではありません。POSIX は、虚数サポートを識別するためにマクロ _Imaginary_I が定義されているかを確認することを推奨しています。

(C99以降)
(C11まで)

虚数サポートは、__STDC_IEC_559_COMPLEX__ が定義されている場合にサポートされます。

(C11 以降)

目次

[編集] 注意

このマクロにより、実数部と虚数部から複素数を正確に組み立てることができます。例えば、(double complex)((double)x + _Imaginary_I * (double)y) のようになります。このパターンは C11 でマクロ CMPLX として標準化されました。もし _Complex_I を代わりに使用した場合、この式は虚数部で負のゼロを正のゼロに変換することが許可されます。

[編集]

#include <stdio.h>
#include <complex.h>
#include <math.h>
 
int main(void)
{
    double complex z1 = 0.0 + INFINITY * _Imaginary_I;
    printf("z1 = %.1f%+.1fi\n", creal(z1), cimag(z1));
 
    double complex z2 = 0.0 + INFINITY * _Complex_I;
    printf("z2 = %.1f%+.1fi\n", creal(z2), cimag(z2));
}

出力

z1 = 0.0+Infi 
z2 = NaN+Infi

[編集] 参考文献

  • C11標準 (ISO/IEC 9899:2011)
  • 7.3.1/5 _Imaginary_I (p: 188)
  • G.6/1 _Imaginary_I (p: 537)
  • C99標準 (ISO/IEC 9899:1999)
  • 7.3.1/3 _Imaginary_I (p: 170)
  • G.6/1 _Imaginary_I (p: 472)

[編集] 関連項目

複素数単位定数 i
(マクロ定数) [編集]
(C99)
複素数または虚数単位定数 i
(マクロ定数) [編集]
English 日本語 中文(简体) 中文(繁體)