8.2 Arithmetische Operatoren
 
Für arithmetische Operationen (mathematische Gleichungen) gibt es folgende arithmetische Operatoren:
Tabelle 8.1
Darstellung arithmetischer Operatoren in C
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.
8.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 des Modulo-Operators:
/* 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 Einsätzen des Modulo-Operators keine 0 vorkommen darf.
|
 Hier klicken, um das Bild zu Vergrößern
Abbildung 8.1
Rechenbeispiel mit dem Modulo-Operator
|