Operatoren

Operatoren dienen um mit Variablen zu operieren. Scherz bei Seite: zB ist eine Addition eine Operation und + ist der Operator. Ich sage bewusst nicht 'rechnen', denn man kann (wie wir später erfahren werden) auch noch andere Operation ausführen.

OperatorOperationBeispiel
+Addition7+12 == 19
-Subtraktion7-12 == -5
*Multiplikation3*7 == 21
/Division9/7 == 1
%Modulodivision (Rest einer Division)9%7 == 2

Den Rest einer Division kann man nur bestimmen, wenn mit ganzen Zahlen gerechnet wird (da man ja sonst keinen Rest hat, sondern höchstens unendlich viele Nachkommastellen), ist der Modulo-Operator (%) nur für int-Typen definiert und nicht für float, double und long double. Die restlichen Operatoren sind für alle eingebauten Variablentypen definiert.

Viel gibt es zu diesen Operatoren nicht mehr zu sagen, außer dass C++ die mathematischen Rangordnung beachtet: 1+2*3 ist 7. Wenn man die Reihenfolge der Berechnung ändern will, dann muss man Klammern setzen: (1+2)*3 ist 9.

Um einer Variablen einen Wert zuzuweisen nimmt man den = Operator. Hier gibt es aber eine schöne Kurzform: statt a=a+3; zu schreiben, kann man a+=3; schreiben. Zu beachten gilt: a+=2*3; steht für a=a+2*3; += hat keine höhere Priorität als * - denn es ist ja nur eine Kurzform. Diese Kurzform kann man mit fast jedem Operator bilden.

Noch eine Kurzform ist ++a; welches für a=a+1; steht. Man kann sowohl ++a; als auch a++; schreiben. Der Unterschied ist der: Bei ++a; wird zuerst a erhöht und dann der Wert von a zurück gegeben, bei a++; wird zuerst der Wert von a zurück gegeben und erst dann wird a erhöht. Sofern es möglich ist, sollte man immer ++a; vorziehen (warum erfahren wir später).

    #include<iostream>
    using namespace std;

    int main()
    {
        int a=10;
        a=a+10;
        cout<<a<<"\n";
        a=10;
        a+=10;
        cout<<a<<"\n";
        int erg=a/7;
        int rest=a%7;
        cout<<a<<" / 7 ergibt "<<erg<<" und "<<rest<<" Rest\n";
        cout<<"a hatte den Wert "<<erg*7+rest<<"\n";

        a=1;
        cout<<"vorher "<<++a<<"\n";
        cout<<"nachher "<<a<<"\n";
        a=1;
        cout<<"vorher "<<a++<<"\n";
        cout<<"nachher "<<a<<"\n";
    }

Es gibt noch einen weiteren interessanten Operator: sizeof. sizeof wird auf eine Variable oder einen Typen angewendet und liefert die Anzahl der Bytes zurück, die diese Variable/dieser Type groß ist.

Tip!!sizeof(char) ist immer 1
    #include<iostream>
    using namespace std;

    int main()
    {
      int i;
      char c;
      double d;

      cout<<"sizeof int = "<<sizeof(int)<<"\n";
      cout<<"sizeof char = "<<sizeof(char)<<"\n";
      cout<<"sizeof double = "<<sizeof(double)<<"\n";
      cout<<"sizeof i = "<<sizeof(i)<<"\n";
      cout<<"sizeof c = "<<sizeof(c)<<"\n";
      cout<<"sizeof d = "<<sizeof(d)<<"\n";
    }

    

Da sizeof ein Operator wie return ist - kann man Klammern setzen, muss aber nicht. sizeof int ist das gleiche wie sizeof(int). Allerdings gibt es einige Situationen in denen man das sizeof Klammern muss - wegen der Priorität der Operatoren.

Deine Aufgabe ist, mit Hilfe einer Schleife und den operator+ sowie dem operator- die beiden Operatoren * und / zu simulieren. Der User gibt 2 Zahlen ein und das Programm multipliziert sie und dividiert sie nur mit Hilfe von + und -. Kleiner Tipp: 3 ist in 10 sooft enhalten wie man 3 von 10 abziehen kann, ohne dass das Ergebnis negativ wird.

Hier ist die Lösung

top