Die leere Semikolonanweisung in C
Syntax der leeren Semikolonanweisung
.-.
--->( ; )--->
'-'
Die leere Semikolonanweisung besteht aus einem einzelnen Semikolon.
Semantik der leeren Semikolonanweisung
Die Ausführung der leeren Semikolonanweisung hat keine Wirkung.
Beispiel zur leeren Semikolonanweisung
Das folgende Beispielprogramm enthält in der Verbundanweisung der main -Funktion eine leere Anweisung.
main.c
int main( void ){ ; }
stdout
- keine Ausgabe.
Die leere Anweisung in der if -Anweisung
Das folgende Programm gibt »x « aus, obwohl x 0 ist.
main.c
#include <stdio.h> int main( void )
{ int const x = 0;
if( x );
puts( "x" ); }stdout
x
Es könnte sein, daß es beabsichtigt war, daß die Ausgabeanweisung Teil der if -Anweisung ist. Eine if -Anweisung kann jedoch immer nur eine andere Anweisung enthalten, und dies ist im Falle der Anweisung »if( x );« bereits das Semikolon »;«. Es handelt sich hierbei vermutlich um einen Flüchtigkeitsfehler, welcher durch Löschen des Semikolons »;« behoben werden kann. Weil das Semikolon an dieser Stelle aber syntaktisch erlaubt ist, wird dieses Programm von einer C -Implementation akzeptiert und ausgeführt.
Nutzen der leeren Semikolonanweisung
Zu diesem Zeitpunkt kann kein Programmbeispiel gezeigt werden, in dem die leere Semikolonanweisung unbedingt benötigt wird. Sie wurde hier nur behandelt, um zu erklären, warum es im Falle der Anweisung »if( x );« keine Fehlermeldung gibt. Sie hilft auch zu verstehen, warum es bei einem versehentlich getippten doppelten Semikolon, wie in »printf( "%d\n", 2 );;« ebenfalls keine Fehlermeldung gibt.
Zitate zur leeren Semikolonanweisung
- N1570 (gekürzt und leicht überarbeitets)
- 6.8.3 Expression and null statements
- Syntax
- 1 expression-statement:
- expressionopt ;
- Semantics
- 3 A null statement (consisting of just a semicolon) performs no operations.