Besser int oder void bei Aufruf eines Unterprogramms?

Persönliche Seite #625795
Lesenswert?

Wenn in der Funktion test() etwas schiefgehen kann, wenn ihr übergebene 
Parameter auf Richtigkeit überprüft werden sollen, dann ist die 
Verwendung eines Rückgabewertes sinnvoll, mit dem die Funktion mitteilen 
kann, daß etwas nicht in Ordnung ist.

Hierbei gibt es zwei Philosophien:

die "boolsche":

  Die Funktion gibt im Fehlerfalle 0 zurück, wenn sie ordnungsgemäß
  funktioniert, gibt sie einen von 0 unterschiedlichen Wert zurück.

die des Fehlercodes:

  Die Funktion gibt 0 zurück, wenn sie ordnungsgemäß funktioniert.
  Fehlerbedingungen werden durch unterschiedliche Werte signalisiert.
#625847
Lesenswert?

Frank Polle wrote:
> Ok...mehr Hintergrunde gibt es also nicht?!
Was für Hintergründe soll es denn noch geben? Eine Funktion hat entweder 
einen Rückgabewert, der im Prinzip von jedem Datentyp sein kann (oder 
ein Zeiger auf einen Datentyp) oder sie hat keinen Rückgabewert und ist 
dementsprechend vom Typ void...

Wenn Deine Funktion "test" einen double zurückgibt, dann muss es auch
1
double test()
heißen. Wenn test einen Zeiger auf einen unsigned long zurückgibt, dann 
ist es
1
unsigned long* test()
Gast #626010
Lesenswert?

Die Geschwindigkeit ist doch kein Kriterium , welchen Rückgabetyp man 
verwendet. Entweder man braucht einen, dann nimmt man den passenden, 
oder man braucht eigentlich keinen, dann ergibt sich die Frage, ob 
Fehlercodes verwendet wird.
Man könnte rein theoretisch ;) ganz auf Rückgabewerte verzichten und mit 
Globalen Variablen oder call-by-reference arbeiten, nur: schneller ist 
das sicher auch nicht.

?! Jörg
Gast #626017
Lesenswert?

Aber wenn mich jemand fragt:

"Besser int oder void bei Aufruf eines Unterprogramms?"

dann ist meine Antwort eben void aus oben genannten Gründen...

Wenn mir jemand die Wahl zwischen void und int gibt, dann bedeutet dies 
für mich, dass er keinen Rückgabewert benötigt... Stimme eurer Logik, 
dass eine Funktion, die nichts zurückliefert void sein sollte natürlich 
99% zu... :-)
#626030
Lesenswert?

Miu wrote:
> Wenn mir jemand die Wahl zwischen void und int gibt, dann bedeutet dies
> für mich, dass er keinen Rückgabewert benötigt...
Oder, dass er das Prinzip des Rückgabewertes absolut nicht verstanden 
hat...

> Stimme eurer Logik,
> dass eine Funktion, die nichts zurückliefert void sein sollte natürlich
> 99% zu... :-)
Wieso nur zu 99%?
Gast #626037
Lesenswert?

Wer etwas nimmt, sollte auch etwas zurück geben.

Wenn also eine Funktion irgendwelche Parameter annimmt, sollte sie so 
nett sein und auch wieder etwas zurück geben.

Das was eine Funktion zurück gibt, sollte natürlich umso größer sein, je 
mehr Parameter sie nimmt.

Generell gilt auch: Geben ist seeliger als Nehmen.

Funktionen, die also gar keine Parameter nehmen und dennoch etwas 
zurückgeben, sind für das Gemeinwohl des kompletten Programms sehr 
günstig und sollten daher bevorzugt behandelt werden.

Funktionen die sich aus globalen Variablen-Eigentum bedienen, sind 
Schmarotzer und sollten eliminiert werden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren