Namensräume
Varianten
Aktionen

_Imaginary_I

Von cppreference.com
< c‎ | numeric‎ | complex
Definiert im Header <complex.h>
#define _Imaginary_I /* unspecified */
(seit C99)

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

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

Ein Compiler, der __STDC_IEC_559_COMPLEX__ definiert, ist nicht verpflichtet, imaginäre Zahlen zu unterstützen. POSIX empfiehlt die Überprüfung, ob das Makro _Imaginary_I definiert ist, um die Unterstützung für imaginäre Zahlen zu identifizieren.

(seit C99)
(bis C11)

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

(seit C11)

Inhalt

[bearbeiten] Hinweise

Dieses Makro ermöglicht die präzise Konstruktion einer komplexen Zahl aus ihren realen und imaginären Komponenten, z.B. mit (double complex)((double)x + _Imaginary_I * (double)y). Dieses Muster wurde in C11 als Makro CMPLX standardisiert. Beachten Sie, dass, wenn stattdessen _Complex_I verwendet wird, dieser Ausdruck negative Nullen in positive Nullen in der imaginären Position konvertieren darf.

[bearbeiten] 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

[bearbeiten] 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)

[bearbeiten] Siehe auch

die komplexe Einheit konstante i
(Makro-Konstante) [bearbeiten]
(C99)
die komplexe oder imaginäre Einheit konstante i
(Makro-Konstante) [bearbeiten]