Einführung in die Rückgabe von Werten aus Funktionen im Rahmen der Lehre des Programmierens mit der Programmiersprache C++. (C++ return-Anweisung C++ Rückgabe C++ Rückgabeanweisung C++), Lektion, Seite 721423
https://www.purl.org/stefan_ram/pub/c++_wertrueckgabe_de (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
C++-Kurs

Die Wertrückgabe in C++ 

Der Wert einer Funktion wird durch eine in der Funktion vorkommende Rückgabeanweisung festgelegt, die eine Art von Sprunganweisung jump-statement  ist.

jump-statement 〉 ::=
"return" [〈expression 〉] ";".

Beispiel: Wie viele Tage haben 2 Wochen?

Das folgende Beispiel zeigt die Verwendung der Rückgabeanweisung in C++.

In der Definition der Funktion "Anzahl_der_Tage_einer_Woche" wird als Ergebnis der Wert des Ausdrucks "7" festgelegt. Der Datentyp "int" wird hier vor dem Funktionsnamen anstelle des bei Wirkfunktion üblichen Datentyps "void" angegeben, um festzulegen, daß das Ergebnis der Funktion vom Datentyp "int" ist.

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int main(){ ::std::cout << 2 * 7 << "\n"s; }

::std::cout
14

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int Anzahl_der_Tage_einer_Woche(){ return 7; }

int main(){ ::std::cout << 2 * Anzahl_der_Tage_einer_Woche() << "\n"s; }

::std::cout
14

An Stelle des Rückgabetyps kann auch »auto« geschrieben werden, um diesen automatisch ermitteln zu lassen (seit C++14 ).

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

auto Anzahl_der_Tage_einer_Woche(){ return 7; }

int main(){ ::std::cout << 2 * Anzahl_der_Tage_einer_Woche() << "\n"s; }

::std::cout
14

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int Anzahl_der_Tage_einer_Woche(){ return 7; }

int Anzahl_der_Tage_zweier_Wochen(){ return 2 * Anzahl_der_Tage_einer_Woche(); }

int main(){ ::std::cout << Anzahl_der_Tage_zweier_Wochen() << "\n"s; }

::std::cout
14

In klassischen C++ -Programmen werden Namen, die aus dem Englischen kommen, meist klein geschrieben. Wir haben »Anzahl_der_Tage_zweier_Wochen« hier abweichend in Anlehnung an die deutschen Regeln geschrieben.

Mit der Rückgabeanweisung wird auch die Kontrolle an den Aufrufer der Funktion zurückgegeben. Daher werden nachfolgende Anweisungen nicht mehr ausgeführt. Deswegen gilt die Rückgabe auch als Sprunganweisung.

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int f()
{ ::std::cout << "A\n"s;
return 7;
::std::cout << "B\n"s; }

int main(){ ::std::cout << f() << "\n"s; }

::std::cout
A
7

Wertfunktionen als eine Art von Abkürzung

Das »auto« legt den Typ des return-Ausdrucks als Typ des Aufrufs fest.

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

auto LKW(){ return "Lastkraftwagen"s; }

int main()
{ ::std::cout << "Von links brausen Autos und "s <<
LKW() << " in Richtung Norden vorbei.\n"s; }

::std::cout
Von links brausen Autos und Lastkraftwagen in Richtung Norden vorbei.

C -Zeichenfolgen

Wenn eine C -Zeichenfolge als Rückgabeausdruck für eine Funktion mit dem Rückgabetyp »::std::string« verwendet wird, wird sie zur Initialisierung des Rückgabewertes herangezogen und dadurch automatisch in eine C++ -Zeichenfolge vom Typ »::std::string« gewandelt.

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

::std::string f(){ return "abc"; }

int main()
{ { ::std::string v = "abc"; /* Definition und Initialisierung */
::std::cout << v << "\n"s; }

::std::cout << f() << "\n"s; }

Protokoll
abc
abc

Rückgaben mit einer Initialisierungsliste ⃗

Eine Initialisierungsliste ist eine Liste von Werten in geschweiften Klammern.

Hinter dem Schlüsselwort »return« kann auch eine Initialisierungsliste stehen.

Eine Initialisierungsliste hinter »return« wird zur Initialisierung des Rückgabewertes wie bei einer Variablendefinition herangezogen.

Bei Verwendung eines der Typen wie »int« oder »double« als Rückgabetyp, verbietet die Initialisierungsliste also eine Typeinengung.

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int f(){ return { 2 }; } /* OK */

int g(){ return { 2.1 }; } /* error */

int main()
{ }

transcript
main.cpp: In function 'int g()':
main.cpp:9:23: error: narrowing conversion of '2.1000000000000001e+0' from 'double' to 'int' inside { } [-Wnarrowing]
int g(){ return { 2.1 }; }
^

Beim Typ »::std::string« werden die Werte der Initialisierungsliste als Kennzahlen der Zeichen der Zeichenfolge interpretiert.

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

::std::string f(){ return { 65, 66, 67 }; }

int main()
{ { ::std::string v{ 65, 66, 67 }; /* Definition und Initialisierung */
::std::cout << v << "\n"s; }

::std::cout << f() << "\n"s; }

Protokoll
ABC
ABC

Übungsfragen

Übungsfrage 0

Was ist die Ausgabe des folgenden Programms?
main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int f(){ return 4; }

int g(){ return f() + f() + 2; }

int main(){ ::std::cout << g() << "\n"s; }

Übungsfrage 1

main.cpp

#include <iostream>
#include <ostream>
#include <string>

using namespace ::std::literals;

int f()
{ ::std::cout << "A"s;
return 7; }

int main(){ ::std::cout << f(); f(); ::std::cout << "\n"s; }

Protokoll
A7A
Welchen Wert ergibt die Auswertung des Ausdrucks »f()«, wenn »f« so definiert ist, wie in dem obigen Programm?
Welche Wirkung hat die Auswertung des Ausdrucks »f()«, wenn »f« so definiert ist, wie in dem obigen Programm?
Warum lautet die Ausgaben »A7A« und nicht »A7A7«, obwohl »f()« zweimal aufgerufen wurde? Wo ist die zweite »7« geblieben?

Übungsaufgaben

Eine konstante Funktion

Schreiben Sie eine Definition einer Wertfunktion »f«, so daß ein Aufrufausdruck »f()« den Typ »double« und den Wert »7.2« hat. Geben Sie dann das Zehnfache des Wertes eines Aufrufs von »f« aus.

(Eine Wertfunktion ist eine Funktion, deren Aufruf einen Wert hat.)

Zusatzaufgaben

?    Würfel
Schreiben Sie eine Wertfunktion »wuerfel«, die eine ganzzahlige Pseudozufallszahl ergibt, die größer-gleich 1 und kleiner-gleich 6 ist.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram721423 stefan_ram:721423 C++ return-Anweisung C++ Rückgabe C++ Rückgabeanweisung C++ return statement, Der Rückgabewert in C++, Die Rückgabewerte in C++, Der Rückgabewert einer Funktion, Die Rückgabewerte von Funktionen, Die return-Anweisung, Die Anweisung return, function definition in C++, The return statement in C++, The C++ return statement, source, source code,sourcecode, Programmier sprache C++ Sprache, C++, CXX, C+, Programm, Programme, C++-Programm C++ Sprache C++ Programmiersprache C++ c++-Programme, Standard C++, Programmieren in C++, Programmieren in CXX, Programmieren in CPP, Programmieren in Cplusplus, Die Programmiersprache C++, Die Programmiersprache CXX, Die Programmiersprache CPP, Die Programmiersprache Cplusplus, Die Programmier sprache C++, Die Programmier sprache CXX, Die Programmier sprache CPP, Die Programmier sprache Cplusplus, CXX-Programmierung, C++-Programmierung, CPP-Programmierung, c-plus-plus, cpluplus-Programmierung, ANSI-C++, ANSI-CXX, ANSI-CPP, ANSI C++, ANSI CXX, ANSI-cpluscplus ISO-C++, ISO-CXX, ISO CPP, ISO C++, ISO CXX, ISO/IEC-C++, ISO/IEC-CXX, ISO/IEC CPP, ISO/IEC C++, ISO/IEC CXX, IEC-C++, IEC-CXX, IEC CPP, IEC C++, IEC CXX, International Standard ISO/IEC 14882 First edition 1998-09-01, ISO/IEC 14882:1998(E), ISO/IEC 14882:2003(E), ASC X3, 7/27/98, c plus plus, C ++, cplusplus, c plus plus, Standard C+ programmieren, Stamdard C++ programmieren, Standart C+ programmieren, Stamdart C++ programmieren, INCITS/ISO/IEC 14882-1998, Information Technology - Programming Languages - C++ (formerly ISO/IEC 14882-1998), Programmieren in C++,Programmiersprache C++ CPP CXX Cplusplus c plus plus International Standard ISO/IEC 14882 First edition 1998-09-01, Softwareentwicklung, Software-Entwicklung, Software Entwicklung, Softwareprogrammierung, Software-Programmierung, Software Programmierung, Softwareherstellung, Software-Herstellung, Software Herstellung, Softwareerstellung, Software-Erstellung, Software Erstellung, Softwareengineering, Software-Engineering, Software Engineering, Softwareenginering, Software-Enginering, Software Enginering, Softwaremethodik, Software-Methodik, Software Methodik, Programmiermethodik, Programmier-Methodik, Programmier Methodik, Softwaredidaktik, Software-Didaktik, Software Didaktik, Methodik des Programmierens, Didaktik des Programmierens, Fachdidaktik des Programmierens, Fach-Didaktik des Programmierens, Programmieren, Programmierung, Computer Science, Informatik, Informatik, Informationspädagogik, Informationspaedagogik, Programmierer, programmieren, Quellcode, Quelltext, Quelle, Quellen, Informatiker, Fachinformatiker, Entwickler, mit Stil, mit Stiel, mit Still, , Einführung, Einfuehrung, Einführungen, Einfuehrungen, eLearning-Modul, e-Learning-Modul, eLearning-Module, e-Learning-Module, Kurs Berlin, Kurse Berlin, Kursus, Vortrag, Vorträge, Vortraege, Lehrgang, Lehrgänge, Lehrgaenge, kostenloses Lehrmaterial, kostenlose Lehrmaterialien, Vorlesung, Vorlesungen, Unterrichtseinheit, Unterrichtseinheiten, kostenloses Unterrichtsmaterial im Internet, kostenlose Unterrichtsmaterialien im Internet, Ausbildung, Ausbildungen, für die Ausbildung, Fortbildung, Fortbildungen, Weiterbildung, Weiterbildungen, Schulung Berlin, Schulungen Berlin, Internetschulung, Webschulung, Kursunterlage, Kursunterlagen, trainer Berlin, Didaktik, Informatikunterricht, Primer, Skript FH, Skripte FH, Skriptum FH, Skripts FH, Script FH, Scripte FH, Scriptum FH, Scripts FH, howto, how-to, how to, Lehrbuch, Buch, Bücher, Buecher, Bericht, Crash Kurs Berlin, Crash-Kurs Berlin, Crashkurs Berlin, Report, Sachtext, Sachtexte, Übung, Übungen, Uebung, Uebungen, course, PbclevtugFgrsnaEnz, lecture note, lecture notes, Tutorial, Tutor, Tutorium, Teacher, Lehrer Berlin, Trainer Berlin, Beratung Berlin, Anleitung zum, Anleitungen zum, Einführung, Einfuehrung, Einführungen, Einfuehrungen, Handbuch für, Handbücher, Handbuecher, Support, Diplomarbeit, Facharbeit, Hausarbeit, Hausarbeiten, Werk, Werke, Text, Übungsblatt, Uebungsblatt, Lösung, Loesung, Lösungen, Loesungen, Auflösung, Aufloesung, Auflösungen, Aufloesungen, Facharbeit, Facharbeiten, Forum, Training, manual, Folie, Folien, Lehrmittel, beratung, Definition von, Allgemeine Erklärung, Allgemeine Erklaerung, Allgemeine Erklärungen, Allgemeine Erklaerung, Allgemeine Erklaerungen, Einfache Erklärung einfach, Einfache Erklaerung einfach, Einfache Erklärungen, Einfache Erklaerung, Einfache Erklaerungen, zum Thema, FAQ, FAQs, Konzept, Lernkurs, Lern-Kurs, Lernkurse, Lern-Kurse, eine kurze Erklärung, Begriff, Begriffe, Erklärung zu Begriffen, begriffbestimmung, begriffbestimmung, Begriffsbestimmung, Begriffserklärung, Begriffserklaerung, Wort, Worterklärung, Worterklaerung, Definition, Beispiel, Beispiele, Bedeutung, Bedeutungen, was bedeutet, Begriffsdefinition, für Anfänger, fuer Anfaenger, für Einsteiger, für Beginner, zum selber Lernen, handout, hand out, web based training, WBT, Net Based Training, NBT, computer based training, CBT, virtual learning environment, virtual university, für die Schule, Seminar, Seminare, Vorgehensweise, Pädagogik, Paedagogik, Akademie, Onlineacademie, Onlineakademie, Wissen, Unterrichtsvorbereitung für das Fach, Unterricht, für Lehrer, für Lehrerinnen, Referat, Referate, Hausaufgabe, Hausaufgaben, Tip, Tipp. Tipps und Tricks, Tips und Tricks, Methode, Methoden, Methodik, Funktion, Funktionsweise, Aufbau, Prinzip, Grundlage, Grundlagen, Internetschulung, Unterlage, Unterlagen, Struktur, Frage, Fragen, Antwort, Antworten, Schulunterricht, zum erlernen, was ist das?, wie?, lerne, Onlineausbildung, Onlinelehrgang, Onlinekurs, Onlinebuch, Webbuch, Academy, Fachhochschule, FH, TFH, Hochschule, Universität, Universitaet, Uni, Schule, Berufsschule, Gymnasium, Erste Schritte mit, Dozent, Dozenten, Zusammenfassung, Übersicht, Term, Fachwort, Fachbegriff, Fachbegriffe, Grundbegriff, Grundbegriffe, Lektion, Lektionen, Bedienungsanleitung, Bedienungsanleitungen, Spezialist, Spezialisten, Coaching, Coach, Fachbuch, technologie, Unterschied zwischen, Unterschiede zwischen, lehren, unterrichten, für das Studium, für Studenten, für Studentinnen, für Studierende, für Schüler, für Schülerinnen, Wie kann ich, Wie kann man, Hilfe, selber, erstellen, Erstellung, Beginner, Online-Seminar, Online-Kurs, Online-Schulung, ich, gebrauchsanweisung, gebrauchsanleitung, Bedienungsanweisung, Einweisung, Kurzinfo, Internet-Kurs, Internet-Kurse, Online-Training, Intensiv, Intensivkurs, Vortragsreihe, Präsentation, Grundzüge, Mitschrift, Mitschriften, Verständnis, verstehen, anwenden, Hintergrundwissen, Hintergrund, Hintergründe, content, Funktionsprinzip, Schritt für Schritt; E-Learning; elearning; online learning; Fernlehre, Fernlehrgang, Fernlehrgänge, Referent, Referenten, Fernkurs, Fernkurse, Fernstudium, Fernschule, Fernuniversität, Fernlehrer, Denken, Qualifizierungsmaßnahme, Qualifizierung, Qualifizierungen, Volkshochschulkurs, Volkshochschulkurse, Internet-Learning-Plattform, Online-Learning-Plattform, E-Learning-Plattform, Internetlearning-Plattform, Onlinelearning-Plattform, Elearning-Plattform, jetzt, Kochbuch, einfach erklärt, Kenntnis, Kenntniss, Kenntnisse, deutsche Hilfe, lernen und verstehen; blended learning; courseware, Profi, Profis, professionell, professionelle, professionelles, profesionell, profesionelle, profesionelles, professionel, gekonnt, für Könner, Grundkurs, Leistungskurs, Aufbaukurs, Lehrtext, Lehrtexte, Fachtext, Fachtexte, Ausarbeitung, distance learning, Online Seminar, distance education, Online Tutorium, Online Tutorien, technology-based learning, Computer based learning, CBL, Internet Based learning, IBL, Web based learning, WBL, online-learning, OL, online-training, OT, CAI, Computer Assisted Instruction, CUU, Computerunterstützter Unterricht, Computer-unterstützter Unterricht, Know how, Grundkenntnis, Grundkenntnisse, Kompetenz, Schulungsunterlagen, Insiderwissen, Rat, Lehrerinnen und Lehrer, ABC, Überblick, Arbeitsblatt, Sekundarstufe, Oberstufe, Material, Materialien, Unterrichtsentwurf, Unterrichtsentwürfe, Lerntip, Lerntips, Lerntipp, Lerntipps, ebook, schnell lernen, Lerner, Lernender, Lernende Erwachsenenbildung, Frage und Antwort, Selbststudium, Selbstudium, Umschulung, , kostenlos, kostenlose, kostenloses, kosten los, kosten lose, kosten loses, gratis, free, frei, freie, freies, privat, private, privates, homepage, home-page, home page, website, web site, webpage, web-page, web page, webpages, web-pages, web pages, webseite, Web-Seite, Webseite, Webseiten, Web-Artikel, Web Artikel, online, on-line, on line, download downloaden, down load, or, deutsch, deutsche, deutsches, deutscher, Deutschland, deutschsprachig, deutschsprachige, deutschsprachiges, german, germany, and, uebersicht, Uerbersicht, uebersichten, Uebersichten, Übersicht, übersicht, Übersichten, übersichten, Uebersicht, uebersicht, Uebersichten, uebersichten, Info, Infos zu, Information über, ueber, Informationen über, Auskunft, Auskünfte, Auskuenfte, Dienst, PbclevtugFgrsnaEnz, Angebot, Angebote, Anbieter, server, für, fuer, in, an, keyword, keywords, key word, keywords, internet, internets, net, network, net work, networks, net works, web, www, world wide web, Theorie, Praxis, Anwendung, DV, IT, glossar, fachwörterbuch it-glossar, computer lexikon, Computerlexikon, Computer-Lexikon, Lexikon, computer lexicon, Computerlexicon, Computer-Lexicon, Lexicon, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 was ist ein, was ist das, was sind, definiere, definition, define, Inhalt, html, xhtml, free im netz, PDF Text, digital, digitale, binär, binäre, elektronisch, elektronische, fachbegriff, fachbegriffe, konzept, Begriff, allgemein, allgemeine, allgemeines, Technik, Datentechnik, Digitaltechnik, Binätechnik, online lesen; , Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd721423, slrprddef721423, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/c++_wertrueckgabe_de