"cout" Funktion

Hi zusammen. Ich hab eine Funktion geschrieben die keinen Wert zurückgeben soll, sondern einfach nur etwas ausgibt. Ob das sinnvoll ist oder nicht sei dahingestellt. Will halt nur ein bisschen "üben".

#include <iostream>
using namespace std;

int ausgabe()
{
cout<<"Diese Ausgabe kommt von der Funktion";
return 0;
}

int main()
{
int ausgabe();

cout<<ausgabe();
cout<<"\n";

return 0;
}

Auf dem Bildschirm erscheint allerdings "Diese Ausgabe kommt von der Funktion0". Mit der vermutung, dass dies an "return 0;" liegt hab ich versucht die funktion mit void zu deklarieren wobei nur Fehlermeldungen kamen und das programm gar nicht erst startete....

gegooglet hab ich schon ;)
 
Du schreibst
Code:
cout << ausgabe();

Also du gibst den Returnwert der Funktion auf der Konsole ausgabe() aus.
Wenn du eine Funktion nur ausführen willst, dann reicht es ja sie einfach zu "starten", du benötigst ja da keine Ausgabe in diesem Fall.

Also so:

Code:
ausgabe();
 
Die Fehler kommen übrigens daher, dass du versuchst einen Rückgabewert auszugeben wo dann keiner existiert (durch das void).
 
du hast da einige Fehler drin ;)

1. das "int" im aufruf der Funktion in der ersten Zeile von main() ist überflüssig und das würde niemand so schreiben. Beim Aufruf einer Funktion muss maan nciht den Rückgabetyp angeben.

2. es ist ganz richtig, dass das ausgegeben wird, was ausgegeben wird :)

uberleg mal: zuerst wird die funktion ausgabe() aufgerufen, was zur folge hat, dass "Diese Ausgabe kommt von der Funktion" ausgegeben wird.

danach kommt der Befehl "cout << ausgabe();
dieser Befehl gibt einfach das aus, was ausgabe() zurückgibt(returned), nämlich 0.

Am Schluss wird noch eine newline ("\n") ausgegeben.

wenn du als Rückgabetyp der Funktion void haben willst, dann müsste das so aussehen:

Code:
void ausgabe()
{
     cout<<"Diese Ausgabe kommt von der Funktion";
}

die funktion darf dann auch kein return mehr haben, da das besondere an void funktionen ja ist, dass sie nichts zurückgeben.
dann funktioniert allerdings auch cout << ausgabe(); nicht mehr, denn da würde ja ausgegeben werden, was ausgabe() zurückgibt, wenn ausgabe() allerdings als void deklariert ist, gibt sie ja nichts mer zurück und deshalb kann der (nicht vorhandene) rückgabewert auch nicht ausgegeben werden.
 
Original von Heinzelotto
1. das "int" im aufruf der Funktion in der ersten Zeile von main() ist überflüssig und das würde niemand so schreiben. Beim Aufruf einer Funktion muss maan nciht den Rückgabetyp angeben.
Was redest du hier für einen Müll!?
Die EInstiegsfunktion muss etwas zurückgeben.
Ein Programm selbst ist eine Funktion und wird beendet durch zurückgeben
seines Prozessabschlusses. Je nach Programm gibt die Einstiegsfunktion
beim Beenden den Erfolgscodenummer zurück.

Kleine Programme, die ein Verzeichnis barbeiten und der Pfad zu den
Dateien wird via char * argv[] übergeben. Wenn die Dateien erfolgreich
bearbeitet wurden, gibt die Einstiegsfunktion 0 zurück, wenn keine
Schreibrechte -1 usw. Damit ein größeres Programm dieses
kleine Ausführen kann als externe Funktion und die Rückgabe als
Erfolgscodenummer liest.

http://tutorial.schornboeck.net/groessten_luegen.htm
Lüge Nummer 1.
Ansonsten sry, wenn ich dih falsch verstanden habe.
 
Du hast es falsch verstanden. Ich würde unter "erste Zeile von main()" die Zeile verstehen, in der "int ausgabe();" steht, was an dieser Stelle wirklich falsch ist.

Übrigens: Selbst wenn jemand in deinen Augen "Müll" erzählt, muss man das nicht gleich so drastisch sagen. Du kommst nämlich ziemlich unfreundlich rüber, und das wird weder hier noch sonst irgendwo gerne gesehen, zumindest ist das meine Meinung.
 
Zurück
Oben