Das ATOS-Magazin
 
  zurück zum News-Archiv
Anfang zurück vorwärts Ende 

ANSI C - Ein Programmierkurs - Teil V

Anweisungen

Nachdem wir nun Variablen deklarieren können, wollen wir damit auch etwas anfangen, also z.B. damit rechnen. Oder allgemeiner ausgedrückt wollen wir die Variablen in Anweisungen benutzen. Anweisungen werden immer mit einem Semikolon abgeschlossen. Einen Typ von Anweisungen haben wir schon in dem ersten Beispiel gesehen, nämlich einen Funktionsaufruf. Hier schauen wir uns Zuweisungen an Variable und Ausdrücke, als Verknüpfungen von Werten an.

Eine Zuweisung besteht aus dem Namen der Variablen, einem Gleichheitszeichen '=' und dem zugehörigen Wert. Das sieht dann so aus:

#include <stdio.h>
 
 int main()
 {
   int i;
 
   i = 10;
   printf("i hat den Wert: %d\n",i);
 }

Die Variablen werden mit printf ausgegeben und durch Komma getrennt hinter dem Text aufgeführt. Für jede Variable muss im Text an der Stelle, wo sie ausgegeben werden soll, ein Platzhalter angegeben werden. Für den Datentyp int ist dies %d, für float %f, für char %c und für long %ld. Das obige Beispiel gibt den Wert der Variablen i nach dem Doppelpunkt aus. Eine ausführliche Beschreibung finden Sie im Kapitel über die ANSI Libs.

Zusätzlich lassen sich Variable und Konstanten auch in Ausdrücken miteinander verknüpfen. Dazu gehören die bekannten Grundrechenarten wie Addition '+', Subtraktion '-', Multiplikation '*' und Division '/'. Für die Umwandlung zwischen verschiedenen Zahlensysteme wird der Teilerrest benötigt. Dies erledigt der Modulo-Operator '%'. Zum Beispiel liefert 10 % 3 als Ergebnis 1, da der Rest von 10 / 3 eine 1 ergibt.

Es gibt weiterhin noch Inkrement- und Dekrement-Operatoren. Anstelle von i = i + 1 kann man kürzer i++ schreiben. Analog kann man statt i = i - 1 auch i-- schreiben. Der Inkrement- und der Dekrementoperator kann auch vor die Variable geschrieben werden --i. Der Unterschied kommt zum Tragen, wenn die Variable in einem Ausdruck verwendet wird. Steht der Inkrement bzw. Dekrementoperator vor der Variable, so wird sie zuerst inkrementiert bzw. dekrementiert und anschließend ihr Wert benutzt. Andernfalls wird zuerst ihr Wert benutzt und sie dann inkrementiert bzw. dekrementiert. Ein Beispiel findet sich im Kapitel über die while-Schleife.

Um Bits in ganzzahligen Variablen/Konstanten zu verknüpfen, kennt C folgende Operatoren: das Bitweise AND '&', das jedes einzelne Bit der beiden ganzzahligen Operanden mit AND verknüpft. Das bitweise ODER OR '|', das bitweise Exklusiv-Oder (XOR) '^', das bitweise NOT '~' das jedes Bit invertiert und damit das Einer-Komplement liefert und zum Schluss die Schiebebefehle (shift), die sämtliche Bits in ihrer Position um eine vorgegebene Anzahl Stellen verschieben können '<<', '>>'. Beispiele, die das Verhalten verdeutlichen, folgen im Kapitel Bitoperatoren.

Für die Verknüpfung von logischen Werten gibt es auch Operatoren. Das sind die logische Negierung (NOT) '!', das logische und (AND) '&&' und das logische oder (OR) '||'. Hinzu kommen die Vergleiche kleiner '<', kleiner gleich '<=', größer '>', größer gleich '>=', gleich '==' und ungleich '!='. Achtung: Der Test auf Gleichheit besteht aus zwei Gleichzeichen! Ein einzelnes Gleichzeichen wäre eine Zuweisung. Beispiel für die Anwendung sind im Kapitel logische Operatoren zu finden.

Es ist auch noch eine Kurzform einer Anweisung möglich. Wenn die Variable, der das Ergebnis zugewiesen wird, auch in den Ausdruck eingeht. In diesem Fall kann man den entsprechenden Operator vor die Zuweisung schreiben und die Variable im Ausdruck weglassen. Der Ausdruck i = i * 3; lässt sich auch als i *= 3; schreiben.

Der Komma-Operator erlaubt es, zwei Ausdrücke als eine Operation zu schreiben. Dies ist in der Regel nicht nötig und wird hauptsächlich in der for-Schleife benutzt. Deshalb findet sich auch dort ein Beispiel.

Zum Schluss haben wir noch den Fragezeichenoperator. Hierbei handelt es sich um die Kurzform einer bedingten Anweisung. Wenn der Ausdruck links vom Operator wahr ist, also ungleich 0, dann wird die Anweisung zwischen Fragezeichen und Doppelpunkt ausgeführt. Andernfalls wird die Anweisung rechts vom Doppelpunkt ausgeführt. Bei den Anweisungen muss es nicht ein kompletter Ausdruck sein, eine Konstante oder Variable für eine Zuweisung ist auch möglich.

Und damit das etwas anschaulicher wird, folgt ein Beispiel. Wir nehmen an, wir haben 2 Variablen Zahl1 und Zahl2 und wollen das Minimum der Variablen Min zuweisen. Dann lässt sich das wie folgt schreiben:

...
Min = (Zahl1 < Zahl2) ? Zahl1 : Zahl2;

In Anweisungen können Klammern gesetzt werden, um dadurch zum einen eine bestimmte Reihenfolge der Auswertung vorzugeben. Zum anderen können sie das Verständnis erleichtern.

Wir können auch eine Zuweisung in den Ausdruck einbauen, das Ergebnis dieser Zuweisung ist der Wert dieses Operanden: x = (i = 10) + 2; In diesem Fall hat x den Wert von i + 2, also 12.

Bitoperatoren

Um zu verstehen, wie die Bitoperatoren funktionieren, können die folgenden Tabellen benutzt werden. Sie beschreiben für ein Bit das Ergebnis für alle möglichen Kombinationen der beiden Operanden für AND, OR und XOR.

AND-Verknüpfung
  0 1
0 0 0
1 0 1
OR-Verknüpfung
  0 1
0 0 1
1 1 1
XOR-Verknüpfung
  0 1
0 0 1
1 1 0

Und dazu folgen jetzt ein paar Beispiele. Was liefern diese Beispiele? Um zu prüfen, ob Sie alles verstanden haben, sollten Sie das Ergebnis zuerst selbst ausrechnen und anschließend mit einem kleinen C-Programm prüfen, bevor Sie weiter lesen.

...
i1 = 10;
i2 = i1 & 0x00FF;
i3 = i1 | 172;
i4 = ~i3;
i5 = i3 ^ i2;

In der nächsten Folge werden Ihnen die Lösungen für die obigen Aufgaben präsentiert.

Michael Bernstein


Anfang zurück vorwärts Ende  Seitenanfang

Copyright und alle Rechte beim ATOS-Magazin. Nachdruck und Veröffentlichung von Inhalten nur mit schriftlicher Zustimmung der Redaktion.
Impressum - Rückmeldung via Mail oder Formular - Nachricht an webmaster