return-Anweisung
Beendet die aktuelle Funktion und gibt einen angegebenen Wert an die aufrufende Funktion zurück.
Inhalt |
[bearbeiten] Syntax
attr-spec-seq(optional) return expression ; |
(1) | ||||||||
attr-spec-seq(optional) return ; |
(2) | ||||||||
| expression | - | Ein Ausdruck, der zur Initialisierung des Rückgabewerts der Funktion verwendet wird |
| attr-spec-seq | - | (C23)optionale Liste von Attributen, die auf die return-Anweisung angewendet werden |
[bearbeiten] Erklärung
Wenn der Typ des Ausdrucks vom Rückgabetyp der Funktion abweicht, wird sein Wert konvertiert, als ob er einem Objekt zugewiesen würde, dessen Typ der Rückgabetyp der Funktion ist, mit der Ausnahme, dass Überlappungen zwischen Objektrepräsentationen zulässig sind.
struct s { double i; } f(void); // function returning struct s union { struct { int f1; struct s f2; } u1; struct { struct s f3; int f4; } u2; } g; struct s f(void) { return g.u1.f2; } int main(void) { // g.u2.f3 = g.u1.f2; // undefined behavior (overlap in assignment) g.u2.f3 = f(); // well-defined }
Wenn der Rückgabetyp ein reeller Gleitkommatyp ist, kann das Ergebnis in einem größeren Bereich und höherer Präzision als vom neuen Typ impliziert dargestellt werden.
Das Erreichen des Endes einer Funktion, die void zurückgibt, ist äquivalent zu return;. Das Erreichen des Endes jeder anderen werte-zurückgebenden Funktion ist undefiniertes Verhalten, wenn das Ergebnis der Funktion in einem Ausdruck verwendet wird (es ist erlaubt, einen solchen Rückgabewert zu verwerfen). Für main siehe main-Funktion.
|
Die Ausführung der |
(seit C11) |
[bearbeiten] Schlüsselwörter
[bearbeiten] Beispiel
| Dieser Abschnitt ist unvollständig Grund: Verbesserung |
#include <stdio.h> void fa(int i) { if (i == 2) return; printf("fa(): %d\n", i); } // implied return; int fb(int i) { if (i > 4) return 4; printf("fb(): %d\n", i); return 2; } int main(void) { fa(2); fa(1); int i = fb(5); // the return value 4 used to initializes i i = fb(i); // the return value 2 used as rhs of assignment printf("main(): %d\n", i); }
Ausgabe
fa(): 1 fb(): 4 main(): 2
[bearbeiten] Referenzen
- C17-Standard (ISO/IEC 9899:2018)
- 6.8.6.4 The return statement (S. 111-112)
- C11-Standard (ISO/IEC 9899:2011)
- 6.8.6.4 The return statement (S. 154)
- C99-Standard (ISO/IEC 9899:1999)
- 6.8.6.4 The return statement (S. 139)
- C89/C90-Standard (ISO/IEC 9899:1990)
- 3.6.6.4 The return statement
[bearbeiten] Siehe auch
| C++-Dokumentation für
return-Anweisung |