6.2 Arithmetische Operatoren
Für arithmetische Operationen (mathematische Gleichungen) gibt es folgende arithmetische Operatoren:
Operator | Bedeutung |
+ |
Addiert zwei Werte. |
- |
Subtrahiert zwei Werte. |
* |
Multipliziert zwei Werte. |
/ |
Dividiert zwei Werte. |
% |
Modulo (Rest einer Division) |
Für arithmetische Operatoren gelten folgende Regeln:
- Die Punkt-vor-Strich-Regelung: * und / binden also stärker als + und -. In der Praxis heißt dies: 5 + 5 * 5 ergibt 30 und nicht, wie eventuell erwartet, 50. Wenn zuerst 5 + 5 berechnet werden soll, verwenden Sie Klammern. Diese binden dann stärker als die Rechenzeichen; also (5 + 5) * 5 = 50.
- Arithmetische Operatoren sind binäre Operatoren. Binäre Operatoren arbeiten immer mit zwei Operanden, also <Operand><Operator><Operand>.
Ein Programmbeispiel verdeutlicht den Sachverhalt:
/* arithmetik.c */ #include <stdio.h> int main(void) { int zahl1,zahl2,zahl3; int ergeb; zahl1=10; zahl2=20; zahl3=30; printf("Zahl 1= %d\n",zahl1); printf("Zahl 2= %d\n",zahl2); printf("Zahl 3= %d\n",zahl3); // Möglichkeit 1: zuerst Berechnung, dann Ausgabe ergeb=zahl1+zahl2+zahl3; printf("Summe aller Zahlen:%d\n",ergeb); // Möglichkeit 2: wie oben, nur mit Ausgabe in einem Schritt ergeb=zahl3-zahl2; printf("%d - %d = %d\n",zahl3,zahl2,ergeb); /* Möglichkeit 3: mit Anzeige * und Berechnung am Ende der * 'printf'-Anweisung */ printf("%d * %d = %d\n",zahl1,zahl1,zahl1*zahl1); // Möglichkeit 4: weitere 'printf'-Berechnung printf("Zahl 3 / Zahl 1 =%d\n",zahl3/zahl1); // Möglichkeit 5: wieder eine mit 'printf' printf("Zahl 1 + x-Beliebige Zahl =%d\n",zahl1+11); // Ein Klammerbeispiel ergeb=(zahl1+zahl2)/zahl3; printf("(%d + %d)/%d = %d\n",zahl1,zahl2,zahl3,ergeb); return 0; }
Wie Sie in diesem Beispiel sehen, kann die Berechnung auch in der printf-Anweisung ausgeführt werden.
6.2.1 Dividieren von Ganzzahlen
Wenn zwei Ganzzahlen wie z. B. 4/3 dividiert werden, bekommen Sie als Ergebnis 1 zurück. Der Grund ist ganz einfach, denn der Datentyp int entspricht einer Ganzzahlvariablen und schneidet daher den nicht ganzzahligen Rest einfach ab. Wird der Rest benötigt, können Sie den Modulo-Operator verwenden. Der Modulo-Operator hat % als Zeichen. Das ist doch das Formatierungszeichen der Funktionen printf() und scanf()? Nein, denn das eine hat mit dem anderen nichts zu tun. Das Formatierungszeichen von printf() und scanf() wird immer zwischen zwei Hochkommata geschrieben ("%d"). Der Modulo-Operator % ist ein Rechenoperator, genau genommen ein integraler Rechenoperator, der zwischen zwei Operanden steht. Hier ein kleines Programmbeispiel:
/* modulo.c */ #include <stdio.h> int main(void) { int x=5; int y=2; x=x%y; printf("Der Rest von 5/2=%d\n",x); /* Rest=1 */ return 0; }
Eventuell ist der Nutzen dieses Operators nicht sofort ersichtlich. Seine Verwendung wird in späteren Beispielen noch deutlicher gemacht. Zunächst noch ein weiteres Beispiel für den Modulo-Operator:
/* zeit.c */ #include <stdio.h> int main(void) { int sekunden,minuten; printf("Bitte geben Sie die Zeit in Sekunden ein :"); scanf("%d",&sekunden); minuten=sekunden/60; sekunden=sekunden%60; printf("genauer = %d min. %d sek.\n", minuten, sekunden); return 0; }
Zuerst werden die eingegebenen Sekunden durch 60 dividiert, womit Sie die Minuten erhalten. Anschließend wird der Modulo-Operator benutzt, um den Divisionsrest zu berechnen – in diesem Beispiel also die restlichen Sekunden.
Hinweis |
Bitte beachten Sie, dass bei einer Division und bei der Verwendung des Modulo-Operators keine 0 vorkommen darf. |
Abbildung 6.1 Rechenbeispiel mit dem Modulo-Operator
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.