return Anweisung

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. Der Ausdruck nach dem Keyword return wird als Rückgabewert genommen.













Minimum is 10
#include <stdio.h>

void printMessage(int min){
  printf("Minimum 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;
}

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, welche mit dem Rückgabetyp void deklariert sind. Solche Funktionen geben keinen Wert zurück und werden in anderen Sprachen Prozeduren genannt, in C ist dieser Begriff jedoch nicht üblich.

Bei Funktionen, welche void als Rückgabetyp definineren, ist es nicht nötig, einen Wert nach dem Keyword return anzugeben, in C ist es aber auch nicht verboten. Der Compiler gibt jedoch eine Warnung aus: return with a value, in function returning void.

Fehlt bei einem return der Rückgabewert, obschon die Funktion mit einem Rückgabetyp ungleich void definiert ist, so gilt dies in C nicht als Fehler, kann aber zu falschen Ergebnissen führen:






Minimum is 1
int Min(int x, int y){
  if(x<y){return;}else{return;}
}

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

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.



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

Rückgabewerte der main-Funktion

Auch die main-Funktion ist eine Funktion und kann mit einem return abgeschlossen werden. Üblicherweise wird ein Programm durch den Rückgabewert 0 beendet, wohingegen jeder Wert ungleich Null auf einen fehlerhaften Verlauf des Programmes hindeutet. In der Bibliothek stdlib sind hierfür zwei Konstanten EXIT_SUCCESS und EXIT_FAILURE definiert.

Der Rückgabewert der main Funktion ist jedoch nicht standartisiert. Systeme erwarten einen Rückgabewert, welcher den Wertebereich eines char nicht überschreitet. Dieser Wert ist normalerweise nicht von Bedeutung, kann jedoch beim Arbeiten mit mehreren Prozessen oder Threads eine Zusatzinformation an das aufrufende Programm sein.

Wird das Programm in einem Terminal ausgeführt, so wird das Terminal nach Beendigung des Programmes mit einer Meldung wie der folgenden antworten:


Program exited with status 42
int main(){
  return 42;
}