Diskussion:C++-Programmierung/ Einführung in C++/ Verzweigungen

Seiteninhalte werden in anderen Sprachen nicht unterstützt.
Aus Wikibooks

Teilaudrücke von links nach rechts - Tipp zur Geschwindigkeitssteigerung[Bearbeiten]

In diesem Kapitel steht:

Bei den Operatoren && (Logik-und) und || (Logik-oder) werden die Teilausdrücke von links nach rechts bewertet, und zwar nur so lange, bis das Resultat feststeht. Wenn z.B. bei einer &&-Verknüpfung schon die erste Bedingung falsch ist, wird die zweite nicht mehr untersucht. Der Rückgabewert dieser Operatoren ist genau wie bei den Vergleichsoperatoren von Typ bool.

Hier könnte man danach noch einen Tipp hinmachen, dass es also schneller ist, wenn man den Ausdruck, der am ehesten unwahr ist, ganz nach links macht.

--etlam 16:06, 22. Aug. 2007 (CEST)[Beantworten]

Der erste Teil ist soweit richtig, wenn es um "eingebaute" Datentypen (int, char, double usw.) geht. Es ist möglich, für eigene Datentypen die operatoren && und || zu überladen und dann werden stets beide Operanden ausgewertet (und dann der benutzerdefinierte Operator aufgerufen). Benutzerdefinierte Operatoren dürfen auch was anderes als bool zurückgeben, empfehlenswert ist das allerdings nicht.
Der zweite Absatz gilt nur für &&, bei || sollte links der Ausdruck stehen, der am wahrscheinlichsten wahr ist. :-)
--RokerHRO 00:12, 23. Aug. 2007 (CEST)[Beantworten]
Ja, natürlich, kleiner Fehler meinerseits.
In den Tipp sollte man allerdings nicht über überladene Operatoren schreiben, da die Leser ja noch Anfänger sind. Man kann ja dann in dem Kapitel zu überladenen Operatoren darauf aufmerksam machen.
--etlam 10:17, 23. Aug. 2007 (CEST)[Beantworten]
Ich würde an dieser Stelle aber schon darauf hinweisen, dass die "short circuit evaluation" eben nicht immer gilt, und für weitere Erklärungen dann auf spätere Kapitel verweisen. Sonst besteht die Gefahr, dass sich ein Programmierer, der doch mal einen eigenen operator&& geschrieben hat, sich auf diese abgekürzte Auswertung verlässt und damit dann auf die Nase fällt, obwohl er noch schnell hier ins Wikibuch geschaut hat, um sich zu vergewissern, wie diese abgekürzte Auswertung funktioniert (und dann keinen Warnhinweis fand). Dieses Szenario ist gar nicht so abwegig, denn selbst langjährige C++-Programmierer, die diese "short circuit evaluation" vielleicht noch von C kennen und sie quasi "aus dem Schlaf" beherrschen, sind überrascht, wenn sie erfahren, dass sie eben nicht immer durchgeführt wird. Denn den Hinweissatz im Kapitel "Operatorüberladung" hat kaum jemand wirklich gelesen oder behalten (oder er fehlte ganz).
Ein C++-Buch kommt leider nicht ohne Vorwärtsverweise aus, zumindest habe ich bisher alle Versuche dieser Art scheitern sehen. ;-( --RokerHRO 12:16, 23. Aug. 2007 (CEST)[Beantworten]

Quelltext Beispiele[Bearbeiten]

"Sie werden für die Positionierung der Klammern übrigens auch oft auf eine andere Variante treffen:" Vor und nach diesem Satz ist je ein Stück Quelltext, in dem gezeigt wird, wie man if-else-Anweisungen verschachteln kann, allerdings sind beide Quelltexte absolut identisch, inklusive Positionierung der Klammern.--79.196.71.124 16:28, 25. Apr. 2008 (CEST)[Beantworten]

Das war natürlich nicht so gedacht, danke für den Hinweis. (Bin leider erst jetzt drauf gestoßen, hatte meine Beobachtungsliste im April wahrscheinlich mal ne weile aus den Augen verloren.) Viele Grüße --Prog 00:46, 26. Jun. 2008 (CEST)[Beantworten]

Redundanzen in jedem Kapitel[Bearbeiten]

Ich halte es für überflüssig, in jedem Kapitel wieder darauf hinzuweisen, dass überall, wo eine beliebige Anweisung stehen kann, auch eine Blockanweisung (auch Anweisungsblock oder kurz Block genannt) stehen kann und wie diese Blockanweisung aussieht. Ebenso, dass für den Compiler Einrückungen, Umbrüche und mehrfache Leerzeichen irrelevant sind und dass es verschiedene Einrück- und Umbruch-Stile gibt. Ebenso wird in mehreren Kapiteln erklärt, dass Operatoren verschiedene Rangfolgen haben und dass bei komplexeren Ausdrücken der menschliche Leser da schnell den Überblick verliert und dass man dieses durch Klammern oder Aufspalten in mehrere Ausdrücke lesbarer gestalten kann. Es reicht, wenn das an einer Stelle im Buch ausführlich erklärt wird und die anderen Kapitel das dann nur noch knapp erwähnen und auf jenes Kapitel verweisen, etwa wie folgt: "Auch Boolsche Ausdrücke können komplexer und damit für Menschen schwer lesbar werden. Um schwer zu findende Fehler zu vermeiden, sollten diese daher aufgespalten oder geeignet geklammert werden. Siehe auch: Kapitel X.Y.". --RokerHRO 22:30, 1. Okt. 2008 (CEST)[Beantworten]

Ganz oben steht „Einführung“. Das beziehe ich auf Anfang und Einstieg mit dem Lernen in dieses Thema für Anfänger. Lernen ist aber wiederholen. Je öfter ich wiederhole, desto sicherer sollte ich werden. Wenn der Schreiber einige Dinge miteinander verknüpft und das Gleiche in anderen Zusammenhängen immer wieder bringt, so schleift sich dieses beim Anfänger nahezu automatisch ein. Für Könner sind Referenzbücher sicherlich die bessere Wahl. Da gibt es kurz und knackig!!! Ich als Anfänger finde diese Art der Erläuterung gut. Und wenn ich etwas wiedererkenne, habe ich wahrscheinlich schon etwas davon verstanden. ;-) -- Wurzelbaum 21:35, 22. Mai. 2015 (Signatur nachgetragen von: Jürgen 10:00, 23. Mai 2015 (CEST)-- bitte signiere deine künftigen Beiträge selbst mit 4 Tilden ~~~~)[Beantworten]

speziell diese Wahrheitstafeln[Bearbeiten]

Wie liest man speziell diese Wahrheitstafeln? Fehlen da nicht weitere Angaben in den Tabellenköpfen? Dies ist ja ein Einstiegskurs! Wenn man Wahrheitstafeln, -tabellen sucht, kommt man auf ganz andere Formen. Für einen Anfänger erschließt sich das nicht so einfach. ;-) -- Wurzelbaum 21:04, 21. Mai. 2015 (Signatur nachgetragen von: Jürgen 22:15, 21. Mai 2015 (CEST)-- bitte signiere deine künftigen Beiträge selbst mit 4 Tilden ~~~~)[Beantworten]

Stimmt, diese Art der Darstellung ist eher ungewöhnlich. Ich habe es etwas erläutert. (Eigentlich sollte man die Tafeln anders aufbauen. Diese Änderung geht aber nicht ganz so schnell; und ich weiß nicht, wie der Hauptautor an anderen Stellen verfahren ist. Also wollte ich das Prinzip nicht ändern.) -- Jürgen 22:15, 21. Mai 2015 (CEST)[Beantworten]

Danke, jetzt ist diese Logik auch für mich logisch. ;-) -- Wurzelbaum 22:07, 22. Mai. 2015 (Signatur nachgetragen von: Jürgen 10:00, 23. Mai 2015 (CEST)-- bitte signiere deine künftigen Beiträge selbst mit 4 Tilden ~~~~)[Beantworten]