Funktionen, Parameter, Ausdrücke, Operatoren und Evaluierung
In dieser Lehrveranstaltung werden folgende Themen behandelt:
- Funktionen und Parameter
- Funktionen vs. Prozeduren
- Parameterübergabe und Rückgabewert
- Stack vs. Heap
- Call-By-Value CBV
- Call-By-Reference CBR → Zeiger
- [Standardwerte in C++]
- Ausdrücke und Operatoren
- Ausdruck und Anweisung
- Ein Ausdruck ist eine Rechenvorschrift
- Eine Anweisung ist ein Ausdruck gefolgt von ;
- Mehrere Anweisungen in {}-Blöcken gelten wiederum als eine Anweisung
- if while do usw. sind ebenfalls Anweisungen (zur Verzweigung der linearen Programmausführung in Abhängigkeit von einem Wahrheitswert)
- Evaluierung von Ausdrücken → ergibt einen Wert
- Ein Ausdruck besteht aus einer Folge von Operatoren
- Jeder Ausdruck wird evaluiert, indem die Operatoren der Reihe nach ausgewertet werden, so dass der Ausdruck danach genau EINEM WERT entspricht
- Operatoren und Operanden
- Ein binärer Operator (wie z.B. ±*/) verknüpft zwei Operanden (Werte)
- Ein unärer Operator (wie z.B. -!) verändert einen Operanden (Wert)
- Ein Wert kann eine Zahl, eine Variable oder das Ergebnis eines Funktionsaufrufs sein
- Eine Zahl kann octal (0..), dezimal (123..9), hexadazimal (0x…), als ASCII Zeichen (‘A’) angegeben werden
- Jeder Wert kann auch als Wahrheitswert angesehen werden (false = 0).
- Operatorpriorität wie z.B. Punkt vor Strich (siehe Tabelle unten), Evaluierung von links nach rechts
- Besonderheit Zuweisungsoperator: L-Value = R-Value, Evaluierung von rechts nach links
- Ein R-Value ist ein flüchtiger Wert (CPU-Register)
- Ein L-Value ist nicht flüchtig und liegt entweder auf dem Stack oder Heap, d.h. im Hauptspeicher
- D.h. der Zuweisungsoperator ist ein normaler Ausdruck, der einen flüchtigen evaluierten Wert im nichtflüchtigen Hauptspeicher ablegt
- Ausdruck und Anweisung
Operatoren im Ãœberblick:
Operator | Typ | Priorität | Bemerkung |
---|---|---|---|
() | Klammer | höchste | |
-x | Negation | ||
! ~ | Unär | !1 → 0 | |
++ -- | Inkrement | L-value | |
* / % | Faktor | Punkt vor … | 1*2+3 → 5, 5/10 → 0 |
+ - | Term | … Strich | 1+2→3 |
<< >> | Shift | ||
== != < <= > >= | Vergleich | 1==2 → 0 | |
& ^ | | Bit | & vor | | |
&& || | Logik | && vor || | 1&&0 → 0 |
?: | Alternative | ||
= += -= *= /= %= | Zuweisung | (fast) niedrigste | L-value, Kaskadierung |
, | Komma | niedrigste | 0,5 → 5 |