Hallo ! Was ist besser int oder void bei Aufruf des Unterprogramms "test" ? int test(); void test(); Was ist Eure Meinung ? Mfg Frank
Gibt test() etwas zurück? Nein? Dann void!
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.
Ok...mehr Hintergrunde gibt es also nicht?! Gruss Frank
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() |
int,double usw. ist langsamer bzw. braucht mehr Befehle, weil der Compiler irgendwie den Rückgabewert realisieren muss.. Bei void muss er dies nicht.
> int,double usw. ist langsamer bzw. braucht mehr Befehle,
Jetzt wirds doch interessant
Popcorn-holen-geh
scnr Jörg
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
Jo, dat is klar, meine Reply war ja auch nur ein zusätzlicher Hinweis.
> meine Reply war ja auch nur ein zusätzlicher Hinweis.
ok, sry
aber schade eigentlich ;-)
sry Jörg
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... :-)
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%?
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.
Auch wenns die Seele ist, heißt es nur seliger. Sozusagen der "looser" (sic!) unter den religiösen Ausdrücken.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.