Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 << zurück
C von A bis Z von Jürgen Wolf
Das umfassende Handbuch für Linux, Unix und Windows
– 2., aktualisierte und erweiterte Auflage 2006
Buch: C von A bis Z

C von A bis Z
1.116 S., mit CD, Referenzkarte, 39,90 Euro
Galileo Computing
ISBN 3-89842-643-2
gp Kapitel 8 Operatoren
  gp 8.1 Exkurs zu Operatoren
  gp 8.2 Arithmetische Operatoren
    gp 8.2.1 Dividieren von Ganzzahlen
  gp 8.3 Erweiterte Darstellung arithmetischer Operatoren
  gp 8.4 Inkrement- und Dekrement-Operatoren
  gp 8.5 Bit-Operatoren
    gp 8.5.1 Bitweises UND
    gp 8.5.2 Bitweises ODER
    gp 8.5.3 Bitweise XOR
    gp 8.5.4 Bitweises Komplement
    gp 8.5.5 Linksverschiebung
    gp 8.5.6 Rechtsverschiebung
    gp 8.5.7 Rezept für Fortgeschrittene
  gp 8.6 sizeof-Operator
    gp 8.6.1 C versus C++


Galileo Computing - Zum Seitenanfang

8.2 Arithmetische Operatoredowntop

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:

gp  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.
gp  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.


Galileo Computing - Zum Seitenanfang

8.2.1 Dividieren von Ganzzahletoptop

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.


Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 8.1   Rechenbeispiel mit dem Modulo-Operator

 << zurück
  
  Zum Katalog
Zum Katalog: C von A bis Z
C von A bis Z
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Linux-UNIX-Programmierung






 Linux-UNIX-Programmierung


Zum Katalog: C/C++






 C/C++


Zum Katalog: UML 2.0






 UML 2.0


Zum Katalog: Reguläre Ausdrücke






 Reguläre Ausdrücke


Zum Katalog: Linux






 Linux


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de