Namespaces
Variants

CMPLXF, CMPLX, CMPLXL

From cppreference.net
Definiert im Header <complex.h>
float complex CMPLXF ( float real, float imag ) ;
(seit C11)
double complex CMPLX ( double real, double imag ) ;
(seit C11)
long double complex CMPLXL ( long double real, long double imag ) ;
(seit C11)

Jedes dieser Makros erweitert sich zu einem Ausdruck, der den Wert des spezifizierten komplexen Typs ergibt, wobei der Realteil den Wert von real (konvertiert zum spezifizierten Argumenttyp) hat und der Imaginärteil den Wert von imag (konvertiert zum spezifizierten Argumenttyp) hat.

Die Ausdrücke sind als Initialisierer für Objekte mit statischer oder Thread-Speicherdauer geeignet, sofern die Ausdrücke real und imag ebenfalls geeignet sind.

Inhaltsverzeichnis

Parameter

real - der Realteil der zurückzugebenden komplexen Zahl
imag - der Imaginärteil der zurückzugebenden komplexen Zahl

Rückgabewert

Eine komplexe Zahl, bestehend aus real und imag als Real- und Imaginärteil.

Hinweise

Diese Makros sind so implementiert, als ob die imaginären Typen unterstützt würden (selbst wenn sie ansonsten nicht unterstützt werden und _Imaginary_I tatsächlich undefiniert ist) und als ob sie wie folgt definiert wären:

#define CMPLX(x, y) ((double complex)((double)(x) + _Imaginary_I * (double)(y)))
#define CMPLXF(x, y) ((float complex)((float)(x) + _Imaginary_I * (float)(y)))
#define CMPLXL(x, y) ((long double complex)((long double)(x) + \
                      _Imaginary_I * (long double)(y)))

Beispiel

#include <stdio.h>
#include <complex.h>
int main(void)
{
    double complex z = CMPLX(0.0, -0.0);
    printf("z = %.1f%+.1fi\n", creal(z), cimag(z));
}

Ausgabe:

z = 0.0-0.0i

Referenzen

  • C11-Standard (ISO/IEC 9899:2011):
  • 7.3.9.3 Die CMPLX-Makros (S: 197)

Siehe auch

die imaginäre Einheitskonstante i
(Makrokonstante)
C++ documentation für complex