Namespaces
Variants

_Imaginary_I

From cppreference.net
Definiert im Header <complex.h>
#define _Imaginary_I /* unspecified */
(seit C99)

Das _Imaginary_I Makro expandiert zu einem Wert vom Typ const float _Imaginary mit dem Wert der imaginären Einheit.

Wie bei jeder Unterstützung für rein imaginäre Zahlen in C ist dieses Makro nur definiert, wenn die imaginären Zahlen unterstützt werden.

Ein Compiler, der __STDC_IEC_559_COMPLEX__ definiert, ist nicht verpflichtet, imaginäre Zahlen zu unterstützen. POSIX empfiehlt zu prüfen, ob das Makro _Imaginary_I definiert ist, um die Unterstützung imaginärer Zahlen zu identifizieren.

(seit C99)
(bis C11)

Imaginäre Zahlen werden unterstützt, wenn __STDC_IEC_559_COMPLEX__ definiert ist.

(seit C11)

Inhaltsverzeichnis

Hinweise

Dieses Makro ermöglicht die präzise Art, eine komplexe Zahl aus ihren Real- und Imaginärteilen zusammenzusetzen, z.B. mit ( double complex ) ( ( double ) x + _Imaginary_I * ( double ) y ) . Dieses Muster wurde in C11 als das Makro CMPLX standardisiert. Beachten Sie, dass wenn _Complex_I stattdessen verwendet wird, diesem Ausdruck erlaubt ist, negative Null in positive Null in der imaginären Position zu konvertieren.

Beispiel

#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));
}

Ausgabe:

z1 = 0.0+Infi 
z2 = NaN+Infi

Referenzen

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

Siehe auch

die komplexe Einheitskonstante i
(Makrokonstante)
(C99)
die komplexe oder imaginäre Einheitskonstante i
(Makrokonstante)