Normalerweise werden Programmzeilen innerhalb eines Blocks der Reihe nach von oben nach unten abgearbeitet. Soll ein gewisser Teil unseres Programms aber nur ausgeführt werden, wenn eine bestimmte Bedingung zutrifft, dann kommen wir um Logik und die sogenannten Verzweigungen nicht herum.
C++ verwendet im
Gegensatz zu C einen eigenen Typen,
Die einfachste
Verzweigung in C++ geschieht durch die
// dann führe Befehl1 aus (alles bis zum Semikolon)
// sonst führe Befehl2 aus
Befehl
Befehl
// dann führe den nachfolgenden Block aus
// (alle Befehle innerhalb der geschwungenen Klammern)
{
Befehl
Befehl
}
Mal und Plus haben wir im vorherigen Beispiel als Operatoren verwendet. Es gibt noch wesentlich mehr Operatoren in C++, von denen wir in den weiteren Beispielen noch einige wenige benötigen.
C++ unterscheidet
zwischen
verschiedenen Operatorgruppen, die auch verschiedene Rangfolgen
besitzen (Punkt vor Strich, etc.). Arithmetische, binäre
Operatoren
wie
Vergleiche
Um Verzweigungen überhaupt sinnvoll nutzen zu können, müssen wir Zahlen vergleichen können. Das folgende Fragment enthält verschiedene Vergleichsoperatoren:
Von den Vergleichen
liefern natürlich nur die Fälle 2, 3 und 5 den Wert
Logische Operatoren
Verschiedene Vergleiche lassen sich durch logische Operatoren auch zu komplexeren Bedingungen verknüpfen. Natürlich lassen sich nicht nur Zahlen, sondern auch Variablen vergleichen.
cout <<
cout <<
cout <<
{
cout <<
cout <<
}
Ein Fallstrick ist, dass wie in C auch Zahlen für Wahrheitswerte stehen können, dabei steht eine Null für Falsch und alle anderen Zahlen für Wahr. Im Normalfall gibt der Compiler aber in diesem Fall eine Warnung aus.
C++ bedeutet "C um eins erhöht". Der ++-Operator ist unär (nicht binär), da er statt zwei Werte zu verbinden, nur einen einzigen modifiziert. Zum ++-Operator folgendes Fragment:
// (danach ist i noch immer undefiniert, j = 1)
// weise danach den Wert von j auch der Variablen i zu
// (danach ist i = 2, j = 2)
// (danach ist i = 3, j = 3)
// weise den Wert von j der Variablen i zu,
// addiere danach eins zu j hinzu
// (danach ist i = 3, j = 4)
// kann kein Wert zugewiesen werden!
Der Post-Inkrement ist
etwas kryptisch, deshalb werden die Operatoren ++ und -- meist ohne
gleichzeitige Zusweisung verwendet, z.B. in
Zu einem besonderen arithmetischer Operator, den wir später einsetzen werden. Sehen wir uns folgendes Fragment an:
{
}
Das Codefragment
lässt sich in natürliche Sprache so
übersetzen: "Wenn der Rest von
Das %-Zeichen ist der sogenannte Modulo-Operator und a%b bedeutet nichts anderes als "Rest aus a/b". Beispiel:
2%3
ergibt 2,
7%3 ergibt 1,
9%3 ergibt 0, etc.