Was ist Rückgabewert?

Der Wert, den eine Funktion an ihren Aufrufer zurückgibt, wenn sie fertig ist. Im Pseudocode wird der Wert des Ausdrucks hinter return zum Rückgabewert, und die Funktion endet, sobald return ausgeführt wird.

Japanische Bezeichnung: 戻り値

„Rückgabewert“ kommt in 9 Übungsfragen aus 6 Themen vor, z. B. Befehlssatz und Assembler, Linker, Loader und ausführbare Formate, Grundlagen der Programmierung (Pseudocode nachverfolgen).

Fachgebiet: Grundlagen der Programmierung (Pseudocode nachverfolgen)

Jetzt üben: Fragen zu Rückgabewert

Eine Funktion f(x, y) ist definiert als „ist y gleich 0, gib x zurück; andernfalls gib f(y, x mod y) zurück“. Welchen Rückgabewert liefert der Aufruf f(84, 36), und wie oft wird f aufgerufen, den ersten Aufruf eingeschlossen?

  1. ARückgabewert 12, 3 Aufrufe
  2. BRückgabewert 12, 4 Aufrufe
  3. CRückgabewert 6, 3 Aufrufe
Antwort und Erläuterung anzeigen

Antwort: A. Rückgabewert 12, 3 Aufrufe

f(84, 36) ruft f(36, 12) auf, weil 84 mod 36 = 12; dieser Aufruf ruft f(12, 0) auf, weil 36 mod 12 = 0; und da y gleich 0 ist, wird 12 zurückgegeben. Die Aufrufe sind f(84, 36), f(36, 12) und f(12, 0), insgesamt drei; es handelt sich um den euklidischen Algorithmus für den größten gemeinsamen Teiler. Da die Funktion das Ergebnis ihres rekursiven Aufrufs direkt zurückgibt (Endrekursion), kann ein Compiler mit Tail-Call-Optimierung sie in eine Schleife umwandeln, sodass sie keinen weiteren Stack-Speicher belegt, wie tief die Rekursion auch wird.

„Rückgabewert“ in den Erläuterungen

Fragen mit „Rückgabewert“ (9)

  1. Welcher Rückgabewert und welcher verbleibende Code der obigen Funktion ist richtig, wenn Konstantenpropagierung, Constant Folding und Entfernung von totem Code gründlich angewendet werden?
  2. Eine Funktion f(x, y) ist definiert als „ist y gleich 0, gib x zurück; andernfalls gib f(y, x mod y) zurück“. Welchen Rückgabewert liefert der Aufruf f(84, 36), und wie oft wird f aufgerufen, den ersten Aufruf eingeschlossen?
  3. Die obige Funktion f wird dreimal hintereinander aufgerufen. Welcher Rückgabewert ergibt sich beim dritten Aufruf?
  4. Was ist der Hauptzweck der Festlegung einer Aufrufkonvention (Calling Convention)?
  5. Welche Register werden in der Standard-Aufrufkonvention von RISC-V zur Übergabe von Ganzzahlargumenten und Rückgabewerten verwendet?
  6. Welche Aussage zur Adresse, an der das Betriebssystem bei einem C-Programm die Ausführung zuerst beginnt (Entry Point), ist richtig?
  7. Was geschieht im Allgemeinen mit dem Wert 3, wenn die Funktion main in C mit „return 3;“ endet?
  8. ÷ ist die Division; wird das Ergebnis einer ganzzahligen Variablen (auch einem Funktionsargument) zugewiesen, wird der Nachkommaanteil abgeschnitten. Wie oft wird pow einschließlich des ersten Aufrufs aufgerufen, wenn die folgende Funktion pow als pow(2, 10) aufgerufen wird?
  9. Wie oft wird c einschließlich des ersten Aufrufs aufgerufen, wenn die folgende Funktion c als c(4, 2) aufgerufen wird?

Verwandte Begriffe

Stack (Stapelspeicher) Rekursion Aufrufkonvention Argument Konstantenfaltung (Constant Folding) Variable Assembler ABI (Application Binary Interface) Entry Point (Einsprungpunkt) Linker

Zur Glossarübersicht