Wann werden Semikolons gesetzt?

Semikolons zu setzen fällt manchen anfangs schwer. Einfache Grundregel: Hinter jeder beendeten Prozedur kommt nach der letzten, schließenden runden Klammer ')' ein Semikolon. Beispiel:

printf("Hallo Welt\n");

Ist ein Befehl vollständig geschrieben, folgt ein Semikolon. Beispiele:

long Variable;
Variable = 5;

Wird ein Befehlspaket mit einer geschweiften geschlossenen Klammer abgeschlossen, folgt KEIN Semikolon: Die geschlossene geschweifte Klammer gibt dem Compiler bereits zu verstehen, dass das Paket vollendet ist. Eine geöffnete geschweifte Klammer beginnt ein Befehlspaket; somit folgt ihr ebenfalls kein Semikolon. Beispiel 1:

  x = 3;                   // Befehl abgeschlossen
 
  while(x==5)              // KEIN Semikolon, der Befehl geht noch weiter!
  {
    x = x + 1;             // Befehl abgeschlossen
  }                        // Befehlspaket abgeschlossen, kein Semikolon

Beispiel 2:

int main(void)            // Die Definition geht noch weiter, kein Semikolon
{
  printf("Hallo Welt\n");  // Befehl abgeschlossen => Semikolon
  return 0;                // Befehl abgeschlossen
}                          // Befehlspaket abgeschlossen, kein Semikolon

Semikolons bei Strukturen

Ausnahmen bestimmen die Regel: Definiert man lediglich eine Struktur (oder ein Union, beides später), ist das kein Befehlspaket! Es werden lediglich Datenansammlungen definiert. Hier kommt hinter der geschlossenen geschweiften Klammer ein Semikolon:

Beispiel:

struct Wohnung
{
  short  Groesse;
  char   Raeume;
};                     // Hier kommt ein Semikolon hin.

Zur Erläuterung: C erlaubt eine Struktur zu definieren und gleichzeitig bereits Variablen dieses Strukturtyps anzulegen. Um zu kennzeichnen, dass man keine Variablen anlegen möchte, folgt das Semikolon, um die Definition abzuschließen. Will man Variablen anlegen, so folgt das Semikolon den Variablendeklarationen: Beispiel:

struct Wohnung
{
  short  Groesse;
  char   Raeume;
} MeineWohnung;        // Hier kommt ein Semikolon hin.

Die Variable 'MeineWohnung' wird sofort deklariert. Sie ist vom Typ 'struct Wohnung'. Somit wird klar, dass es nur auf den ersten Blick wie eine Ausnahme erscheint, in Wirklichkeit ist die Definition gleichzeitig eine Variablendeklaration, die mit einem Semikolon abgeschlossen werden muss. Auch wenn zum Zeitpunkt der Definition noch keine Variablen benannt werden.