Einsendung:short-cirquit-Auswertung?Zum fiktiven Ausdruck
Wird nun, wenn xy=2 ist, der Wert von ab noch kontrolliert, oder überspringt der Compiler den zweiten Teil, da der Ausdruck eh false wird? In C++ werden die logischen Operatoren nur so lange ausgewertet, bis das Ergebnis feststeht. Wenn xy==2, dann wird ab==1 gar nicht mehr getestet, weil false&&irgendwas immer false ergibt. Diese Art der Auswertung wird "short-cirquit-Auswertung" genannt. Wären dann Konstrukte wie unter OPascal möglich wie
Zur Erklärung: Wäre s ein Leerstring würde die fiktive Umwandlungsfunktion int(s) einen Runtime-Error erzeugen. Solche Konstrukte wären möglich. Leider geht in C++
nicht. Ansonsten haben Sie aber völlig recht.
kann man nämlich gleichermaßen
schreiben. In der zweiten Version sieht man viel deutlicher, daß s.top() nicht mehr aufgerufen wird, wenn s.empty()==false. Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern. [aktuelle Version] [inhalt] [index] [Fehlerkorrektur, Verbesserungsvorschlag] © Volkard Henkel <volkard@normannia.de>, last update: 08/25/00 |