Operatoren

Nun, da Du mit den ersten "Basics" vertraut bist, geht es weiter: Die Operatoren sind sehr wichtig in C.

In dem folgenden Logik-Programm sind drei verschiedene Operatoren versteckt: der Operator + (für die Addition), der für die Subtraktion - und der Operator * (für die Multiplikation).

//logic.c
#include <stdio.h>
#include <conio.h> //getch()

int main()
{
int a = 1;
int b = 100;
printf("Die binomischen Formeln testen und ein Pythagoras-Test:");
printf("\n-------------------------------------------------------");
int bool1 = (a*a + 2*a*b + b*b == (a + b) * (a + b));
int bool2 = (a*a - 2*a*b + b*b == (a - b) * (a - b));
int bool3 = (a*a - b*b == (a + b) * (a - b));
printf("\n%d", bool1);
printf("\n%d", bool2);
printf("\n%d", bool3);
a = 3; b = 4;
int c = 5;

int boolpyth = (a*a + b*b == c*c);
printf("\n\n%d", boolpyth);

getch();
return 0;
} //main()

In C gibt es richtig viele verschiedene Operatoren.

Da gibt es zuerst einmal die Operatoren, die aus der arithmetischen Welt bekannt sind: + (plus), - (minus), * (mal), / (geteilt).

Aber es gibt noch eine Menge mehr Operatoren. Der Restoperator z. B. (%) ergibt den Rest einer Division (einer Ganz-Zahl-Division).

Auch gibt es noch die "unären" Operatoren: ! (NICHT), - (Vorzeichen minus), ++ und --.

Damit nicht genug: Es gibt für Vergleiche die Operatoren: < (kleiner), > (größer), <=, >=, == (gleich), != (ungleich).

Für die Logik gibt es dann noch && (das logische Und) und || (das logische Oder).

Der Bedingungs-Operator ist auch ein Operator, obwohl es ja eine Bedingung ist. Ein schönes Beispiel:

return (i<100)?true:false; was bedeutet: Wenn i < 100 ist, dann gib true zurück, sonst false.

Last, not least: die Zuweisung = und der Operator, der mit der Zuweisung verbunden werden kann, zum Beispiel +=, -= usw.

Wir fangen hier in der Tabelle einmal mit einigen dieser Operatoren an. Das ist schon kompliziert genug:

Spalte 1 Spalte 2
 ! ++  --  -  Unär
*  /  % Multiplikativ
+  - Additiv
<  >  <=  >= Ungleich
==  != Gleich
&& Und
|| Oder
= Zuweisung

In der 2. Reihe der oben stehenden Tabelle kommt der Operator % vor: Das hier % ist der Restoperator (oder der Modulo-Operator). Er dient dazu, den Rest einer ganzzahligen Division zu berechnen. Hier kannst Du sehen, was damit gemeint ist:

//rest.c
#include <stdio.h>

int main(void)
{
    printf("Rechnen mit dem Restoperator ......\n");
    int b, c;
    printf("Bitte erste ganze Zahl eingeben: ");
    scanf("%d", &b);
    printf("Bitte zweite ganze Zahl eingeben: ");
    scanf("%d", &c);
    int a = b % c;
    printf("Der Rest: %d\n", a);
    return 0;
}

Zum besseren Verständnis: Wikipedia.


Hier geht es einmal um die Rangfolge der Operatoren in C. Eigentlich ist so eine Rangfolge nur eine "Konvention". Das heißt: Die Rangfolge ist künstlich eingeführt, aus lauter "Intuition" und aus Berechnung.


Man nennt die Operatoren && auch "logisches Und" und die || "logisches Oder". Das Ausrufezeichen ist das "logische Nicht" - oder sagen wir "logische Negation" dazu. Das ist zunächst einmal einfacher. Man kann mit diesen so etwas programmieren: if (a == 0 && b == 0) ... Das kommt später.

Zur weiteren Untersuchung dieser "Rangfolge der Operatoren": Klick!

Ein Beispielprogramm:

 //boolool.c
#include <stdio.h>
#include <stdbool.h>

int main()
{
    bool b = true;
    bool b2 = false;
    bool c0, c1, c2, c3;
    c0 = b && b2;//false
    c1 = b || b2;//true
    c2 = b ^ b2;//true
    c3 = !b;//false
    if (c0 == true)
        printf("c0 ist true.\n");
    if (c1 == true)
        printf("c1 ist true.\n");
    if (c2 == true)
        printf("c2 ist true.\n");
    if (c3 == true)
        printf("c3 ist true.\n");
    return 0;
}

Jetzt habe ich stillschweigend noch einen Operator (^) verwendet, der oben noch nicht vorkam. Das ^ ist der "Exklusiv-Oder-Operator".