return

Die return-Anweisung führt einen sofortigen Rücksprung aus einer Funktion aus. Es wird an die Stelle zurückgesprungen, an der die Funktion aufgerufen wurde. Sofern die Funktion einen Wert zurückgeben soll, wird der Ausdruck nach dem Keyword return als Rückgabewert genommen.

#include <stdio.h> void printMessage(int min){ printf("The smaller number is %d.\n", min); return; } int Min(int x, int y){ if(x<y){return x;}else{return y;} } int main(){ printMessage(Min(10, 20)); return 0; }

The smaller number is 10.

Siehe auch Funktionen

Details

Der Rückgabewert muss nicht ein fester Wert sein, sondern kann ein beliebiger Ausdruck sein.

Wenn am Ende einer Funktion keine return-Anweisung steht, so fügt der Compiler implizit ein return ein, jedoch ohne Rückgabewert. Dies ist sinnvoll für Funktionen ohne Rückgabewert, also wenn der Rückgabetyp als void deklariert ist. Solche Funktionen werden auch Prozeduren genannt. Bei solchen Prozeduren ist es grundsätzlich nicht nötig, einen Wert nach dem Keyword return anzugeben, in C ist es aber auch nicht verboten. Der C-Compiler wird den Wert ignorieren, gibt jedoch bei Angabe eines Wertes eine Warnung aus: return with a value, in function returning void. In C++ ist die Angabe eines Wertes für eine Prozedur nicht erlaubt und ergibt einen Fehler: return-statement with a value, in function returning void.

Geht in einer Funktion mit einem Rückgabetyp ungleich void bei einem return der Rückgabewert vergessen, so führt dies bei C zu keinem Fehler, bei C++ jedoch zu dem Fehler return-statement with no value, in function returning type. Bei C ist der Rückgabewert nicht definiert und kann zu falschen Ergebnissen führen.

int Min(int x, int y){ if(x<y){return;}else{return;} } int main(){ printMessage(Min(10, 20)); return 0; }

The smaller number is 1.

Das Keyword return führt in jedem Falle einen sofortigen Rücksprung aus. Kommen nach dieser Anweisung im selben Anweisungsblock weitere Anweisungen, so werden diese niemals ausgeführt. Es ist aber explizit möglich, in verschiedenen Anweisungsblöcken mehrere return-Keywords zu benutzen, beispielsweise, um je nach Bedingung einen anderen Wert zurückzugeben.

if(x<y){ return x; x = 5; }else{ return y; }

x = 5 will not be executed

Rückgabewerte der main-Funktion

Auch die main-Funktion ist eine ganz normale Funktion und kann je nach Deklaration mit einem return abgeschlossen werden. Üblicherweise beendet man ein Programm durch den Rückgabewert 0, wohingegen jeder Wert ungleich Null auf einen fehlerhaften Verlauf des Programmes hindeutet. Hierbei ist der Rückgabewert jedoch nicht standartisiert und kann vom Programmierer frei gewählt werden. Dieser Wert ist normalerweise nicht von Bedeutung, kann jedoch beim Arbeiten mit mehreren Prozessen oder Threads eine Zusatzinformation an das aufrufende Programm sein.

Lässt man das Programm in einem Terminal laufen, so wird das Terminal nach Beendigung des Programmes mit einer Meldung wie der folgenden antworten:

int main(){ return Min(10, 20); }

Program has exited with status 10.