Namensräume
Varianten
Aktionen

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

Das Makro I expandiert zu entweder _Complex_I oder _Imaginary_I. Wenn die Implementierung keine imaginären Typen unterstützt, dann expandiert das Makro immer zu _Complex_I.

Ein Programm darf das Makro I undefinieren und eventuell neu definieren.

Inhalt

[bearbeiten] Anmerkungen

Das Makro heißt nicht i, was der Name der imaginären Einheit in der Mathematik ist, da der Name i bereits in vielen C-Programmen verwendet wurde, z. B. als Schleifenzähler-Variable.

Das Makro I wird oft zur Bildung von komplexen Zahlen verwendet, mit Ausdrücken wie x + y*I. Wenn I als _Complex_I definiert ist, kann ein solcher Ausdruck einen Wert mit der imaginären Komponente +0.0 erzeugen, auch wenn y -0.0 ist, was für komplexwertige Funktionen mit Verzweigungsschnitten von Bedeutung ist. Das Makro CMPLX bietet eine Möglichkeit, eine komplexe Zahl präzise zu konstruieren.

GCC bietet eine nicht portable Erweiterung, die es erlaubt, imaginäre Konstanten mit dem Suffix i an ganzzahligen Literalen anzugeben: 1.0fi, 1.0i und 1.0li sind imaginäre Einheiten in GNU C. Ein ähnlicher Ansatz ist als Teil des Standard-C++ ab C++14 enthalten (1.0if, 1.0i und 1.0il sind die imaginären Einheiten in C++)

[bearbeiten] Beispiel

#include <stdio.h>
#include <complex.h>
 
int main(void)
{
    printf("I = %.1f%+.1fi\n", creal(I), cimag(I));
 
    double complex z1 = I * I;     // imaginary unit squared
    printf("I * I = %.1f%+.1fi\n", creal(z1), cimag(z1));
 
    double complex z = 1.0 + 2.0*I; // usual way to form a complex number pre-C11
    printf("z = %.1f%+.1fi\n", creal(z), cimag(z));
}

Ausgabe

I = 0.0+1.0i
I * I = -1.0+0.0i
z = 1.0+2.0i

[bearbeiten] Referenzen

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

[bearbeiten] Siehe auch

die imaginäre Einheit konstante i
(Makro-Konstante) [bearbeiten]
die komplexe Einheit konstante i
(Makro-Konstante) [bearbeiten]
(C11)(C11)(C11)
erzeugt eine komplexe Zahl aus Real- und Imaginärteil
(Funktionsmakro) [bearbeiten]
C++ Dokumentation für operator""i