Ausdrücke (C++)
Nach oben zu Ausdrücke - Index
Ein Ausdruck ist eine Folge von Operatoren, Operanden und Interpunktionszeichen, die eine Berechnung definiert. Die formale Syntax, die unter "C++Builder-Ausdrücke" aufgelistet ist, zeigt an, dass die Ausdrücke rekursiv definiert werden: Unterausdrücke können ohne formale Beschränkung geschachtelt werden. (Allerdings meldet der Compiler den Fehler "Zu wenig Arbeitsspeicher", wenn er einen zu komplexen Ausdruck compilieren soll.)
Hinweis: Wie Bezeichner und Operatoren zu grammatikalisch korrekten Ausdrücken kombiniert werden können, finden Sie unter "C++Builder-Ausdrücke".
Ausdrücke werden auf der Basis bestimmter Regeln für die Umwandlung, Gruppierung, Zugehörigkeit und Vorrangigkeit ausgewertet, die von den verwendeten Operatoren, der Anwesenheit von Klammern und den Datentypen der Operanden abhängen. Die Standardumwandlung wird ausführlich im Abschnitt "Verfahren für arithmetische Standardumwandlungen" beschrieben. Die Reihenfolge, in der Sie Operanden und Unterausdrücke anordnen, muss nicht notwendigerweise die Reihenfolge sein, in der der Compiler Ihre Ausdrücke auswertet (siehe Auswertungsreihenfolge).
Ausdrücke können einen L-Wert, einen R-Wert oder keinen Wert ergeben. Ausdrücke können zu Nebeneffekten führen, gleichgültig, ob sie einen Wert ergeben oder nicht.
Eine Zusammenfassung der Rangfolge und Abarbeitungsreihenfolge finden Sie im Thema "Abarbeitungsreihenfolge und Rangfolge der C++Builder-Operatoren". Die Grammatik in C++Builder-Ausdrücken definiert die Abarbeitungsreihenfolge und Rangfolge der Operatoren vollständig.
C++Builder-Ausdrücke
Primärer Ausdruck:
Literal
this (C++ spezifisch)
:: Bezeichner (C++ spezifisch)
:: Operator-Funktionsname (C++ spezifisch)
:: Qualifizierter Name (C++ spezifisch)
(Ausdruck)
Name
Literal:
Integerkonstante
Zeichenkonstante
Gleitkomma-Konstante
String-Literal
Name:
Bezeichner
Operator-Funktionsname (C++ spezifisch)
Umwandlungs-Funktionsname (C++ spezifisch)
~ Klassenname (C++ spezifisch)
Qualifizierter Name (C++ spezifisch)
Qualifizierter Name: (C++ spezifisch)
Qualifizierter Klassenname :: Name
Suffix-Ausdruck:
Primärer-Ausdruck
Suffix-Ausdruck [ Ausdruck ]
Suffix-Ausdruck (<Ausdrucksliste>)
Einfacher-Typname (<Ausdrucksliste>) (C++ spezifisch)
Suffix-Ausdruck . Name
Suffix-Ausdruck -> Name
Suffix-Ausdruck ++
Suffix-Ausdruck --
const_cast < Typ-ID > ( Ausdruck ) (C++ spezifisch)
dynamic_cast < Typ-ID > ( Ausdruck ) (C++ spezifisch)
reinterpret_cast < Typ-ID > ( Ausdruck ) (C++ spezifisch)
static_cast < Typ-ID > ( Ausdruck ) (C++ spezifisch)
typeid ( Ausdruck ) (C++ spezifisch)
typeid ( Typname ) (C++ spezifisch)
Ausdrucksliste:
Zuweisungs-Ausdruck
Ausdrucksliste , Zuweisungs-Ausdruck
Unärer Ausdruck:
Suffix-Ausdruck
++ unärer Ausdruck
- - unärer Ausdruck
unärer Operator cast-Ausdruck
sizeof unärer Ausdruck
sizeof ( Typname )
Speicherreservierungs-Ausdruck (C++ spezifisch)
Speicherfreigabe-Ausdruck (C++ spezifisch)
Unärer Operator: einer von & * + - !
Zuweisungs-Ausdruck: (C++ spezifisch)
<::> new <Platzierung> neuer Typname <Initialisierer>
<::> new <Platzierung> (Typname) <Initialisierer>
Platzierung: C++ spezifisch)
( Ausdrucksliste )
neuer Typname: (C++ spezifisch)
Typ-Bezeichner <neuer Deklarator>
neuer Deklarator: (C++ spezifisch)
ptr-Operator <neuer Deklarator>
neuer Deklarator [ <Ausdruck> ]
Zuweisungsaufhebungs-Ausdruck: (C++ spezifisch)
<::> delete cast-Ausdruck
<::> delete [] cast-Ausdruck
cast-Ausdruck:
unärer Ausdruck
( Typname ) cast-Ausdruck
pm-Ausdruck:
cast-Ausdruck
pm-Ausdruck .* cast-Ausdruck (C++ spezifisch)
pm-Ausdruck ->* cast-Ausdruck (C++ spezifisch)
Multiplikativer Ausdruck:
pm-Ausdruck
Multiplikativer Ausdruck * pm-Ausdruck
Multiplikativer Ausdruck / pm-Ausdruck
Multiplikativer Ausdruck % pm-Ausdruck
Additiver Ausdruck:
Multiplikativer Ausdruck
Additiver Ausdruck + Multiplikativer Ausdruck
Additiver Ausdruck - Multiplikativer Ausdruck
shift-Ausdruck:
Additiver Ausdruck
shift-Ausdruck << Additiver Ausdruck
shift-Ausdruck >> Additiver Ausdruck
Relationaler Ausdruck:
shift-Ausdruck
Relationaler Ausdruck < shift-Ausdruck
Relationaler Ausdruck > shift-Ausdruck
Relationaler Ausdruck <= shift-Ausdruck
Relationaler Ausdruck >= shift-Ausdrucksgleichheit-Ausdruck
Relationaler-Ausdruck
Gleichheits-Ausdruck == Relationaler Ausdruck
Gleichheits-Ausdruck != Relationaler Ausdruck
AND-Ausdruck:
Gleichheits-Ausdruck
AND-Ausdruck & Gleichheits-Ausdruck
Exklusiv-OR-Ausdruck:
AND-Ausdruck
Exklusiv-OR-Ausdruck ^ AND-Ausdruck
Inklusiv-OR-Ausdruck:
Exklusiv-OR-Ausdruck
Inklusiv-OR-Ausdruck | Exklusiv-OR-Ausdruck
Logischer AND-Ausdruck:
Inklusiv-OR-Ausdruck
logischer AND-Ausdruck && Inklusiv-OR-Ausdruck
Logischer OR-Ausdruck:
logischer AND-Ausdruck
logischer OR-Ausdruck || logischer AND-Ausdruck
Bedingter Ausdruck:
logischer OR-Ausdruck
logischer OR-Ausdruck ? Ausdruck : Bedingter Ausdruck
Zuweisungs-Ausdruck:
Bedingter Ausdruck
unärer Ausdruck Zuweisungs-Operator Zuweisungs-Ausdruck
Zuweisungs-Operator:
jeweils aus der Menge =, *=, /=, %=, +=, -= <<, =>, >=, &=, ^=, |=
Ausdruck:
Zuweisungs-Ausdruck
Ausdruck , Zuweisungs-Ausdruck
Konstantenausdruck:
Bedingter Ausdruck