Bedingungen in C formulieren

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.