Ausdrücke (C++)

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

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 "Appmethod C++-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 "Appmethod C++-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 Appmethod C++-Operatoren". Die Grammatik in Appmethod C++-Ausdrücken definiert die Abarbeitungsreihenfolge und Rangfolge der Operatoren vollständig.

Appmethod C++-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