Vorlesungsskript - Hochschule Emden/Leer
Vorlesungsskript - Hochschule Emden/Leer
Vorlesungsskript - Hochschule Emden/Leer
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
c○ Prof. Dr. B. Bartning, HS <strong>Emden</strong>/<strong>Leer</strong> Rumpfskript ” Informatik I/II“ (WS/SS 2010/11) 37<br />
(3.31) In C ++/C ist ein Ausdruck definiert durch (Definition nicht vollständig, vgl. (2.61b)):<br />
(3.32) Bsp<br />
Ausdruck <br />
Konstante<br />
|<br />
| Variable<br />
( Ausdruck ) |<br />
|<br />
|<br />
FunktionsAufruf (7.12) |<br />
UnärPräfixOperator Ausdruck<br />
Ausdruck BinärOperator Ausdruck<br />
|<br />
|<br />
|<br />
| Ausdruck UnärPostfixOperator<br />
Bei Ausdrücken sind (häufig) zwei verschiedene Wirkungen zu unterscheiden:<br />
• Haupteffekt – als anderes Wort für Wert des Ausdrucks (fast immer vorhanden).<br />
Bsp Ausdrücke mit Haupteffekt (Wert), aber ohne Seiteneffekt (i sei eine initialisierte Variable):<br />
34<br />
i<br />
(i-17)/5<br />
• Seiteneffekt, Nebeneffekt – sonstige Wirkung(en) des Ausdrucks (nicht immer vorh.),<br />
z. B. Wertänderung Variable, Ausgabe Bildschirm, Einlesen, Aufruf Funktion.<br />
Der Begriff ” Seiten. . .“ bedeutet nicht, dass es sich hierbei um unwichtige, nicht gewollte<br />
Wirkungen handelt; nein, wenn Ausdrücke Seiteneffekte haben, sind diese gewollt!<br />
Bsp Ausdrücke mit Seiteneffekt (die durch ein nachgestelltes Semikolon zu einer Ausdrucksanweisung<br />
(3.32a) gemacht werden können):<br />
cout > i (Eingabe)<br />
(a) 51 AusdrucksAnweisung Ausdruckopt ;<br />
• Haupteffekt unwichtig (wird verworfen),<br />
daher Ausdrucksanweisung i. a. nur sinnvoll, wenn Seiteneffekt vorhanden (häufig: Zuweisungsausdruck,<br />
Funktionsaufruf),<br />
andere Benutzung: als <strong>Leer</strong>anweisung (Ausdruck fehlend), wenn Anweisung syntaktisch gefordert,<br />
aber nichts zu tun ist.<br />
(b) ZuweisungsAusdruck Variable = Ausdruck ( = Op16a )<br />
• Haupteffekt: Wert (und Typ) der Variablen nach der Zuweisung,<br />
• Seiteneffekt: Variable erhält Wert des Ausdrucks.<br />
(c) ZuweisungsAnweisung Variable = Ausdruck ;<br />
(Spezialfall der 51 AusdrucksAnweisung)<br />
• Haupteffekt (der gesamten Zuweisung) unwichtig,<br />
• Seiteneffekt wichtig: Wertzuweisung.<br />
(d) Zuweisungskette: Var1 = Var2 = Var3 = 25 ;<br />
Assoziativität von rechts nach links (Op16), daher Interpretation:<br />
Var1 = (Var2 = (Var3 = 25)) ;<br />
Beim inneren Zuweisungsausdruck Var3 = 25 ist auch der Haupteffekt wichtig, da er den Ausdruck-<br />
Wert für die Zuweisung an Var2 darstellt; der Haupteffekt des Zuweisungsausdrucks Var2 = (. . . )<br />
ist der Ausdruck-Wert für die Zuweisung an Var1. Nur der Haupteffekt des Zuweisungsausdrucks<br />
Var1 = (. . . ) ist unwichtig, er wird verworfen.<br />
(e) Inkrement-, Dekrementoperator (unär präfix Op3ab und postfix Op2fg): ++ --<br />
• Seiteneffekt: Wertänderung des Operanden um +1 bzw. -1 – unabhängig, ob präfix oder<br />
postfix!!<br />
• Haupteffekt (hierbei streng Präfix- und Postfixstellung zu unterscheiden!!):<br />
◦ postfix: alter Wert des Operanden,<br />
◦ präfix: neuer Wert des Operanden.<br />
(3.33) △! Der Zeitpunkt der Ausführung von Seiteneffekten ist nicht festgelegt (implementationsabhängig)!!<br />
Sicher sind alle Seiteneffekte abgearbeitet, wenn Anweisung beendet<br />
ist.<br />
△! Keine Ausdrücke formulieren, deren Wert vom Zeitpunkt bzw. der Reihenfolge der<br />
Ausführung von Seiteneffekten abhängt!<br />
|<br />
|