Tutorial 1_6

Modulo, Inkrement, Dekrement, Präfix und Postfix

______________________________________________________________________
//1_6 Modulo, Inkrement, Dekrement, Präfix und Postfix
#include <stdio.h>
int Divident_a, Divisor_a;
float Divident_b, Divisor_b, x;

void main(void)
{
    printf("Geben sie durch ein Komma getrennt Divident und Divisor als\n"
        "ganze Zahlen ein.\n");
    scanf("%d, %d", &Divident_a, &Divisor_a);
    printf("Das Ergebnis betraegt %d, der Rest betraegt %d.\n",
        Divident_a/Divisor_a, Divident_a%Divisor_a);
    printf("Geben sie durch ein Komma getrennt Divident und Divisor als\n"
        "Kommazahlen ein.\n");
    scanf("%f, %f", &Divident_b, &Divisor_b);
    printf("Das Ergebnis betraegt %f.\n",
        Divident_b/Divisor_b);

    printf("Geben sie eine Zahl ein.\n");
    scanf("%f", &x);
    float y = x;
    printf("Ihre Zahl lautet %f.\n", x);
    x++, y--;
    printf("Um einen Erhoeht lautet sie %f.\n", x);
    printf("Um einen erniedrigt hingegen %f.\n", y);
    x = y--;
    printf("Nun lautet sie immer noch %f.\n", x);
    x = --y;
    printf("Jetzt hingegen %f.\n", x);
    printf("Nun wird 10 addiert:%f\n", x+=10);
    printf("Vom Ergebnis wird 5 abgezogen:%f\n", x-=5);
    printf("Das Ergebnis hiervon wiederum wird mit 20 malgenommen:%f\n", x*=20);
    printf("Dieses Ergebnis wird durch 3 geteilt:%f\n", x/=3);
    int z;
    printf("Geben sie eine Ganzzahl an\n");
    scanf("%d", &z);
    printf("Jetzt wird die zweite Zahl durch 9 geteilt und der Rest"
        " angegeben:%d\n", z%=9);
    printf("Schliesslich werden die beiden Ergebnisse miteinander"
        " multipliziert:%f\n", x*z);
}
______________________________________________________________________
Vor der main()-Funktion werden nur stdio.h eingebunden und zwei int- und zwei float-Variablen initialisiert, es passiert hier also nichts Weltbewegendes. Interessanter wirds wie fast immer innerhalb der main()-Funktion. Zuerst wird der Benutzer gebeten, einen ganzzahligen Dividenten und einen ganzzahligen Divisor einzugeben. Die werden in der nächsten Zeile von scanf() in Empfang genommen. Anschlissend wird der Divident durch den Divisor geteilt und das ganzzahlige Ergebnis ausgegeben, in der selben printf()-Funktion wird auch mit dem Modulo- Operator (%) der Rest errechnet und ausgegeben. Nun wird der Benutzer aufgefordert, zwei Kommazahlen als Divident und Divisor einzugeben und, deren Ergebnis wird nach deren Emfang errechnet und angezeigt. Direkt darauf wird wieder eine Kommazahl vom Benutzer empfangen. Ihr Wert wird einer weiteren (zweiten) float-Variable zugewiesen und die Zahl wird angezeigt. Nun wird sie in einer Variablen um 1 erhöht, in der anderen um 1 erniedrigt und die Werte beider Variablen werden angezeigt. Als nächstes wird der Wert von Variable y Variable x zugewiesen und anschliessend y um 1 erniedrigt, der anschliessend angezeigte Wert von x ist logischerweise der "alte" y-Wert. Danach wird y wiederum um 1 erniedrigt und dann erst x zugewiesen, der jetzt angezeigte x- Wert ist logischerweise 2 niedriger als der vorher angezeigte. Der Unterschied zwischen der 1. und der 2. Zuweisung mit Erniedrigung besteht darin, dass bei der 1. die -- hinter dem Variablennamen stehen und bei der 2. Zuweisung davor. Die erste Erniedrigung wird daher mit einem Postfix-, die zweite mit einem Präfix-Operator durchgeführt. Post ist lateinisch für "nach", prä heisst "vor". Diese beiden Arten, den Operator -- oder auch ++ anzuwenden unterscheiden sich in ihrer Priorität. Ähnlich wie in der Mathematik (und auch in C++) die Regel Punktrechnung vor Strichrechnung gilt, gilt auch, dass das -- als Präfix Vorrang vor der Zuweisung des Wertes einer Variablen zu einer anderen hat, der Postfix hingegen nicht. Das ist wichtig um bei komplexen Rechnungen in einem einzigen Befehl (also nicht mehrere durch Semikolons abgeteilte Rechnungen). Wenn man nicht weiß, welche Anweisung die höhere Priorität hat oder einer Anweisung unbedingt eine höhere Priorität geben will, macht man dies wie in Mathe mit runden Klammern (). In den nächsten Zeilen werden die Operatoren +=, -=, *=, /= und %= angewendet. Wenn man zum Beispiel Variable_A = Variable_A * Variable_B erreichen will, so kann man stattdessen einfach Variable_A *= Variable_B schreiben. Der Compiler weiss dann, dass der fehlende Faktor der Wert der Variablen ist, der anschliessend das Ergebnis zugewiesen wird.
Zurück