Grundrechenoperationen,
Komma-Operator

Grundrechenoperationen

Für Berechnungen stehen die Rechenoperationen Addition +, Subtraktion -, Multiplikation * und Division / zur Verfügung. Diese Operationen sind sowohl auf Integer- wie auf Gleitkommadaten anwendbar.

Wird eine Division mit zwei Integer-Daten durchgeführt, ist das Ergebnis ebenfalls ein Integer-Datum. Es erfolgt keine Rundung des Ergebnisses. Soll das Ergebnis als Gleitkommadatum weiterverarbeitet werden, ist mindestens einer der Operanden vor der Division in ein Gleitkommadatum zu konvertieren. Mehr dazu bei den Typkonvertierungen.

Für Integer-Daten steht ferner der Modulo-Operator % (das Prozentzeichen) zur Verfügung. Er berechnet den Rest einer Division von zwei Integer-Daten (siehe Beispiel).

#include <print>

// Zwei Integer-Variablen definieren
auto var1=10, var2=3;

int main ()
{
   // Division zweier Integer
   auto result = var1/var2;
   std::println("10/3 = {}", result);
   // Modulo zweier Integer
   result = var1%var2;
   std::println("10%3 = {}", result);
}

10/3 = 3
10%3 = 1

Bei allen Operationen gilt: Punkt- vor Strichrechnung, d.h. Multiplikation, Division und Modulo vor Addition und Subtraktion. Diese Reihenfolge kann durch Setzen von Klammern geändert werden.

Kurzschreibweisen

C++ stellt eine Reihe von Kurzschreibweisen für häufig benötigte Rechenoperationen bereit.

x++ Erhöht x um 1 nach dessen Auswertung
++x Erhöht x um 1 vor dessen Auswertung
x-- Vermindert x um 1 nach dessen Auswertung
--x Vermindert x um 1 vor dessen Auswertung
x += y x = x + y
x -= y x = x - y
x *= y x = x * y
x /= y x = x / y
x %= y x = x % y
#include <print>

int main ()
{
    // Definition/Initialiserung zweier int-Variablen
    auto x = 10, y = 2;
    std::println("Ausgangswerte: x = {}, y = {}",x,y);

    x++;
    std::println("x++: x = {}, y = {}",x,y);
    y = x++;
    std::println("y = x++: x = {}, y = {}",x,y);
    y = ++x;
    std::println("y = ++x: x = {}, y = {}",x,y);
    x += y;
    std::println("x += y: x = {}, y = {}",x,y);
    x %= 5;
    std::println("x %= 5: x = {}, y = {}",x,y);
    x += (--y * 2);
    std::println("x += (--y * 2): x = {}, y = {}",x,y);
}

Ausgangswerte: x = 10, y = 2
x++: x = 11, y = 2
y = x++: x = 12, y = 11
y = ++x: x = 13, y = 13
x += y: x = 26, y = 13
x %= 5: x = 1, y = 13
x += (--y * 2): x = 25, y = 12

Beachten Sie den Unterschied in den Berechnungen zwischen x++ und ++x bzw. x-- und --x.

Komma-Operator

Mithilfe des Komma-Operators können an Stellen, an den sonst nur ein Ausdruck steht, mehrere Ausdrücke angegeben werden. Er hat folgende Syntax:

AUSDRUCK1 , AUSDRUCK2

Zuerst wird AUSDRUCK1 ausgewertet und dessen Ergebnis dann verworfen. Anschließend wird AUSDRUCK2 ausgewertet und dessen Ergebnis zurückgegeben. Damit lässt sich zwar das nachfolgende Programm fehlerfrei übersetzen, jedoch mag das Ergebnis der Berechnung überraschen.

#include <print>

int main ()
{
    // Zwei int-Variablen definieren/initislieren
    auto val1 = 1, val2 = 2;
    // Variabel result definieren, Datentyp ist
    // gleich dem Datentyp der Variable val1
    decltype(val1) result;
    // Ergebnis ist val1+1
    result = val1+1, val2+1;
    std::println("{}",result);
    // Ergebnis ist val2+1
    result = (val1+1, val2+1);
    std::println("{}",result);
}

2
3

Die println-Anweisung in der Zeile 11 gibt den Wert 2 aus und die in Zeile 14 den Wert 3. Der Grund ist, dass der Zuweisungsoperator in Zeile 11 eine höhere Priorität besitzt als der Komma-Operator, die Klammer in Zeile 14 aber wiederum eine höhere Priorität als die Zuweisung.

Übungen

grechop_01

Ein Sparkonto mit einer einmaligen Einlage von 1000,- EUR wird mit 3 % verzinst.

Geben Sie den Kontostand nach dem 1. und 2. Jahr aus.

Nach dem 2. Jahr wird der Zinssatz um 0.5 % gesenkt.

Geben Sie den Kontostand nach dem 3. Jahr aus.

Alle Ausgaben sind auf 2 Nachkommastellen zu begrenzen.

Betrag nach 1. Jahr: 1030.00
Betrag nach 2. Jahr: 1060.90
Betrag nach 3. Jahr: 1087.42

grechop_02

Berechnen Sie den elektrischen Widerstand (in Ohm) folgender Kupferleitungen:

  • Länge 10 m, Querschnitt 1 mm2
  • Länge 10 m, Querschnitt 2 mm2
  • Länge 100 m, Querschnitt 2 mm2

Die Formel zur Berechnung des Leitungswiderstands lautet:

Leitungswiderstand = Kupferwiderstand * Länge / Querschnitt

Für den Kupferwiderstand ist Konstante 0.0172 einzusetzen. Die Angabe der Länge innerhalb der Formel ist in m und die des Querschnitts in mm2.

Widerstand bei 10.00 m und 1.00 qmm: 0.17 Ohm
Widerstand bei 10.00 m und 2.00 qmm: 0.09 Ohm
Widerstand bei 100.00 m und 2.00 qmm: 0.86 Ohm