AnweisungsblockIn den Beispielen für die if-else-Struktur, while-Schleife, do-while-Schleife und for-Schleife wurden um die auszuführenden Codeblöcke jeweils geschweifte Klammern {} gesetzt. Die tatsächliche Deklaration dieser Strukturen sieht jedoch eine einzelne Anweisung vor.
Mittels der geschweiften Klammern können mehrere Anweisungen hintereinander in einen Block gepackt werden, was als einzelne Instruktion gilt. Hier wird als Beispiel die if-Struktur genommen:
DetailsAls Kennzeichnung der Zugehörigkeit eines Teiles ohne geschweifte Klammern zu einer Kontrollstruktur wird üblicherweise die Zeile um einen Tab-Schritt eingerückt, dies hat jedoch in den C-Sprachen keinerlei Relevanz, sondern dient lediglich dem Programmierer als visuelle Hilfe. Dies wird dann nützlich, wenn mehrere solche Einzelanweisungen hintereinander auftreten, denn da alle Kontollstrukturen als einzelne Anweisung gelten, sind beliebige Verschachtelungen möglich:
Die Notation ohne geschweifte Klammern ist für kleine Strukturen nach wie vor üblich, birgt jedoch ein Fehlerpotential, wenn der Code erweitert wird. Folgendes Beispiel sollte alle Zahlen positiv machen, leider wurde vor die Vorzeichenumkehr eine Debug-Zeile eingefügt, welche nun bewirkt, dass die ursprünglich positiven Zahlen negativ werden.
BereichsdefinitionDurch die Definition eines Anweisungsblockes mit geschweiften Klammern {} wird ein neuer Bereich eingeleitet. Somit können lokal neue Variablen deklariert werden, welche ausserhalb der Kontrollstruktur nicht sichtbar sind.
Grundsätzlich ist in der Sprache C sowie C++ der Bereich nur innerhalb der geschweiften Klammern gültig, allerdings ist es unter C++ möglich, Variablen in der Bedingung zu deklarieren. Ein Konstrukt wie das folgende ist somit nur in C++ zu realisieren:
Hierbei ist zu beachten, dass sich einige Compiler unterschiedlich verhalten. Während in GCC die Deklaration der Variablen so betrachtet wird, als ob sie innerhalb des Anweisungsblockes auftreten würde, Beschreibt dasselbe Konstrukt bei Visual-C++ eine Deklaration ausserhalb. Dadurch ist es in Visual-C++ nicht möglich, in einem Bereich mehrere solche Konstrukte mit denselben Variablennamen zu verwenden, während bei GCC beliebig viele gleiche Deklarationen autreten können.
|