Whitespaces

In den Sprachen C und C++ haben Leerzeichen wie Space, Tabulator und Zeilenumbruch keine semantische Bedeutung sondern dienen lediglich der Trennung von syntaktischen Elementen. Solche Leerzeichen werden als Whitespaces bezeichnet. Während andere Sprachen wie BASIC beispielsweise den Zeilenumbruch als Trennzeichen zwischen Anweisungen auffasst, ist der Einsatz von Zeilenumbrüchen in C und C++ belanglos, womit mehrere Anweisungen in eine Zeile geschrieben werden können:




8

In C und C++ werden sämtliche hintereinander geschriebene Leerzeichen beim Compilieren als ein einziges Trennzeichen aufgefasst. Damit werden die einzelnen Elemente voneinander getrennt, die Anweisungen werden jedoch nicht unterbrochen. Somit sind sogar folgende Anweisungen äquivalent zu den obigen Anweisungen:

#include <stdio.h>

int main(){
  int       a =
     5  ;       int
b=3          ;    int
  c=     a +
   b;    printf   ("%d\n"
      ,c);
  return            0;
}

Hierbei stellt sich lediglich die Frage nach der Lesbarkeit. Es ist zu beachten, dass Leerzeichen, obschon sie zu einem einzigen Leerzeichen zusammengefasst werden, dennoch abgrenzenden Charakter besitzen. Wird somit versucht, ein Symbol oder Keyword durch Leerzeichen zu spalten, so fasst dies der Compiler als zwei Elemente auf. Folgende Codezeilen sind somit NICHT mehr mit obigen Code äquivalent und führen zu Fehlern:




error
#include <stdio.h>

int main(){
  i n t a = 5;
  i nt b = 3;
  in    t c = a + b;
  pr in tf("%d\n",  c);
  re t urn 0;
}

Mittels Leerzeichen kann der Sourcecode in visuell unterstützender Form geschrieben werden, was auch durch moderne Programmier-Umgebungen unterstützt wird. Das wichtigste visuelle Element ist dabei das Einrücken von Zeilen innerhalb eines Codeblocks, was im englischen mit Indentation bezeichnet wird.



0, 0
1, 0
2, 0
0, 1
1, 1
2, 1
0, 2
1, 2
2, 2
#include <stdio.h>

int main(){
  int x, y;
  for(y=0; y<3; y++){
    for(x=0; x<3; x++){
      printf("%d, %d\n",  x, y);
    }
  }
  return 0;
}

Viele Quellen empfehlen, in jede Zeile nur eine Anweisung zu schreiben. Die Empfehlung auf dieser Seite lautet, zusammengehörige, einfach zu verstehende Anweisungen zusammenzufassen, längere Anweisungen in einer Linie zu verpacken und besonders lange Anweisungen der Lesbarkeit entsprechend auf mehrere Zeilen zu verteilen.

x=a[0]; y=a[1]; z=a[2];

sendMessage(windowref, "Alert!", "Ok", "Cancel", true);

return Matrix22(a[0]*m2.a[0] + a[1]*m2.a[2],
                a[0]*m2.a[1] + a[1]*m2.a[3],
                a[2]*m2.a[0] + a[3]*m2.a[2],
                a[2]*m2.a[1] + a[3]*m2.a[3]);
Nächstes Kapitel: Kommentare // /* */