Rechnen, vergleichen und logische Ausdrücke
Ein Ausdruck berechnet einen Wert, etwa 2 + 3. Ein Operand ist ein Wert, auf den ein Operator angewendet wird. Hier sind 2 und 3 die Operanden von +.
Rechnen, vergleichen und logische Ausdrücke#
Werte und Ausdrücke · Lektion 15 von 60
Voraussetzungen: Datentypen. Lernziel: Du erkennst Ganzzahldivision und formulierst eindeutige Bedingungen.
Ein Ausdruck berechnet einen Wert, etwa 2 + 3. Ein Operand ist ein Wert, auf den ein Operator angewendet wird. Hier sind 2 und 3 die Operanden von +.
1#include <iostream>2 3int main() {4 std::cout << 7 + 2 << '\n';5 std::cout << 7 / 2 << '\n';6 std::cout << 7.0 / 2 << '\n';7 std::cout << 7 % 2 << '\n';8 std::cout << std::boolalpha << (7 > 2) << '\n';9}192333.5415trueArithmetische Operatoren#
Arithmetik bedeutet Rechnen mit Zahlen. +, - und * addieren, subtrahieren und multiplizieren. / dividiert. Sind beide Operanden ganze Zahlen, ist das Ergebnis eine ganze Zahl; der Bruchteil wird Richtung null abgeschnitten. Auch double ergebnis = 7 / 2; berechnet zuerst 3. Mindestens ein Operand muss vor der Division ein Gleitkommawert sein.
% berechnet den Divisionsrest für Ganzzahlen. Prüfe den Divisor vor / und %: Ganzzahldivision durch null ist undefiniertes Verhalten. Auch der kleinste vorzeichenbehaftete Wert geteilt durch -1 kann außerhalb des Bereichs liegen.
Vergleiche und Verknüpfungen#
== prüft Gleichheit, != Ungleichheit. <, <=, > und >= vergleichen die Größe. Das Ergebnis ist bool, also true oder false.
&& bedeutet logisches Und, || logisches Oder, ! Verneinung. Die eingebauten Und- und Oder-Operatoren werten rechts nur aus, wenn es noch nötig ist. Das heißt Kurzschlussauswertung. teiler != 0 && zahl / teiler > 2 vermeidet hier die Division durch null.
Schreibe einen Bereich als 0 <= zahl && zahl <= 10. 0 <= zahl <= 10 bedeutet in C++ etwas anderes: Der erste Vergleich erzeugt einen Wahrheitswert, der anschließend mit 10 verglichen wird.
Reihenfolge und Nebenwirkungen#
Priorität legt fest, wie Operatoren gruppiert werden. Multiplikation bindet stärker als Addition. Priorität ist nicht allgemein eine zeitliche Reihenfolge aller Auswertungen. Nutze verständliche Klammern und wenige Nebenwirkungen, also Änderungen am Programmzustand.
punkte += 2; addiert zwei zu einer Variable. ++punkte; erhöht um eins. Als eigenständige Anweisung erhöht auch punkte++; um eins; innerhalb größerer Ausdrücke unterscheiden sich der vorherige und der nachfolgende Wert. Vermeide anfangs solche Mischungen.
Übung#
Warum liefert double mittel = (3 + 4) / 2; nicht 3,5?
Lösung
Beide Divisionsoperanden sind Ganzzahlen. Schreibe (3 + 4) / 2.0. Ein späterer Zieltyp kann die vorher verlorene Hälfte nicht wiederherstellen.
Weiterlernen#
Zurück: const, constexpr und auto · Kursübersicht · Weiter: Typumwandlungen und static_cast
Kommentare 0
Kommentare sind für diese Seite deaktiviert.