Kommen wir nochmal zu Basic:
IF A=7 THEN PRINT "A ist 7"
würde in C heißen:
if(a==7) printf("a ist 7\n");
Der Vergleichsoperator ist nicht '=' sondern '=='!
Welche Operatoren gibt es?
C | Basic | Bedeutung |
---|---|---|
== | = | ist gleich (gilt nicht für Strings!) |
!= | <> | ist ungleich |
> | > | ist größer |
< | < | ist kleiner |
>= | >= | ist größer oder gleich |
⇐ | ⇐ | ist kleiner oder gleich |
Macht man eine Aussage wie a==7
ist diese entweder richtig oder falsch. Ist Sie richtig, also a ist gleich 7
, wird der Befehl oder das Befehlspaket nach der if
-Anweisung ausgeführt. Danach läuft das Programm normal weiter.
int main(void) { long a=7; printf("Hallo\n"); if(a==7) printf("a ist 7\n"); printf("Nochmal Hallo\n"); return 0; }
Auf dem Bildschirm würde also
Hallo a ist 7 Nochmal Hallo
erscheinen. Wird die Zeile
long a=7;
in
long a=8;
geändert, erscheint wenn man das Programm kompiliert hat und startet nur noch
Hallo Nochmal Hallo
weil die Variable a nun nicht mehr den geforderten Wert 7
besitzt.
Das printf hinter dem if() wird nur ausgeführt, wenn die in den runden Klammen geschriebene Bedingung erfüllt ist. Hier besitzt a den Wert 8 und nicht den geforderten Wert 7, die Anweisung hinter if() wird daher nicht ausgeführt.
Man kann das Programm nun 'erweitern'. Zum Beispiel so:
int main(void) { long a = 8; printf("Hallo\n"); if( a == 7 ) printf("a ist 7\n"); if( a != 7 ) { printf( "a ist ungleich 7\n" ); printf( "Schade eigentlich...\n" ); } printf( "Nochmal Hallo\n" ); return 0; }
Einfacher, schneller (weil nur ein Vergleich durchgeführt wird) und viel elegenter ist folgendes:
int main(void) { long a = 8; printf( "Hallo\n" ); if( a == 7 ) printf( "a ist 7\n" ); else { printf( "a ist ungleich 7\n" ); printf( "Schade eigentlich...\n" ); } printf( "Nochmal Hallo\n" ); return 0; }
Die Befehle, die nach dem Befehl else
(zu deutsch „sonst“) eingeklammert sind, werden ausgeführt, wenn die Bedingung der vorherigen if
-Anweisung nicht erfüllt wurde: Wenn a
gleich 7
, dann printf(„a ist 7\n“)
, sonst printf(„a ist ungleich 7\n“)
Man kann diese beiden Befehle auch kombinieren. Zum Beispiel so:
int main(void) { long a = 8; printf( "Hallo\n" ); if( a == 7 ) printf( "a ist 7\n" ); else if (a == 8) printf ("a ist 8\n"); else { printf( "a ist ungleich 7 und ungleich 8\n" ); printf( "Schade eigentlich...\n" ); } printf( "Nochmal Hallo\n" ); return 0; }
Hier wird zuerst geprüft, ob a den Wert 7 hat. Ist dies nicht der Fall, wird auf 8 geprüft. Ist a auch nicht 8, wird der else Zweig ausgeführt.