Hallo, ich habe hier mal eine Frage bezüglich von Funktionsrückgabewerten in C. Bei Variablen ist ja eigentlich alles klar. Wenn ich eine Variable deklariere, ihr aber keinen Wert zuweise kann die Variable einen zufälligen Wert annehmen (evtl. Compilerabhängig ???) Wenn ich eine Funktion schreibe, die einen INT Rückgabewert liefert, diese jedoch bis zum Zeitpunkt X noch nicht aufgerufen habe, und dann das ganze gleich in der if-Abfrage verwende, nach dem Motto, if(Funktion()) { Anweisungen; } was passiert dann ? Also konkret: Hat eine Funktion mit Rückgabewert implizit vor dem Aufruf einen definierten Rückgabewert wie z.B. Null, oder kann der Rückgabewert auch zufällig sein ? Danke für eure Antworten
Deine Frage macht keinen Sinn. Normale Variablen innerhalb von Funktionen werden aber als Stackvariablen gefuehrt. Ohne dass die Funktion gerufen wird, wird auch das Stackframe nicht angelegt und somit gibt es keinen definierten Zustand. Das spielt aber auch kaum eine Rolle, daher versteh ich Deine Frage nicht... Nachtrag: Deine if-Anweisung wird nicht evaluiert bevor Deine Funktion nicht vollstaendig abgearbeitet wurde. Das heisst es spielt keine Rolle was zu einem Zeitpunkt davor geschehen ist, der Koerper wird erst betreten, nachdem alles evaluiert wurde (was auch evaluiert werden muss). Bei if (0 && Funktion()) { } wird Deine Funktion z.B. nicht gerufen werden ;) Greets, Michael
Zapzarapp schrieb: > if(Funktion()) > { > Anweisungen; > } > > was passiert dann ? Du rufst die Funktion ja in der if-Klausel auf. Du könntest genauso schreiben: _temp=Funktion(); if (_temp) { ... } > Also konkret: Hat eine Funktion mit Rückgabewert implizit vor dem Aufruf > einen definierten Rückgabewert wie z.B. Null, oder kann der Rückgabewert > auch zufällig sein ? Bevor eine Funktion nicht aufgerufen wird, liefert sie nichts zurück. Wenn die Funktion aufgerufen wird, gibt sie mit return() einen Wert zurück. Fehlt das return() in einer nicht als void definierten Funktion, gibts zur Compilezeit einen Error. fchk
Hallo, in meiner if-Abfrage rufe ich die Funktion zum ersten mal auf. Sollte nun innerhalb der Funktion eine Variable existieren, die zu diesem Zeitpunkt nicht sinnvoll belegt ist, (weil evtl. nicht explizit vorbelegt) würde die if-Abfrage also erst gar nicht aufgerufen werden ?
Deine Frage macht immer noch keinen Sinn. Du solltest einen C Programmier Grundkurs belegen.
Zapzarapp schrieb: > Hallo, > > in meiner if-Abfrage rufe ich die Funktion zum ersten mal auf. Sollte > nun innerhalb der Funktion eine Variable existieren, die zu diesem > Zeitpunkt nicht sinnvoll belegt ist, (weil evtl. nicht explizit > vorbelegt) würde die if-Abfrage also erst gar nicht aufgerufen werden ? Doch klar. Der Aufruf findet in jedem Fall statt. Nur das Ergebnis wäre dann eventuell undefiniert. fchk
Zapzarapp schrieb: > Sollte > nun innerhalb der Funktion eine Variable existieren, die zu diesem > Zeitpunkt nicht sinnvoll belegt ist, (weil evtl. nicht explizit > vorbelegt) würde die if-Abfrage also erst gar nicht aufgerufen werden ? Sobald Du ein if hinschreibst, wird es auch ausgeführt. Was die Funktion macht, ist völlig schnurz. Benutzt sie eine lokale Variable, ohne sie zu initialisieren, bekommst Du eine Compilerwarnung. Wer Warnungen ignoriert, ist selbst schuld. Das if wird nur dann nicht ausgeführt, wenn der Compiler feststellt, daß es immer wahr oder immer falsch ist. Peter
Zapzarapp schrieb: > Hat eine Funktion mit Rückgabewert implizit vor dem Aufruf > einen definierten Rückgabewert wie z.B. Null, oder kann der Rückgabewert > auch zufällig sein ? Er kann nicht nur, sondern er ist (mehr oder weniger) zufällig. Funktionsrückgabewerte werden üblicherweise in einem (oder mehreren) Registern zurückgegeben, und diese Register werden auch im Ablauf der Funktion selbst für Zwischenergebnisse benutzt.
Zapzarapp schrieb: > Hallo, > > in meiner if-Abfrage rufe ich die Funktion zum ersten mal auf. Sollte > nun innerhalb der Funktion eine Variable existieren, die zu diesem > Zeitpunkt nicht sinnvoll belegt ist, (weil evtl. nicht explizit > vorbelegt) würde die if-Abfrage also erst gar nicht aufgerufen werden ? Du versuchst hier einen Zusammenhang herzustellen, der nicht existiert. Es ist eine Sache, was die Funktion zurückliefert. Es ist aber eine andere Sache, was der Aufrufer der Funktion mit diesem Wert macht. Der Rückgabewert ist das verbindende Glied zwischen den beiden. Das if interessiert sich nicht dafür, wie die Funktion ihren Rückgabewert ermittelt, es benutzt einfach nur diese Wert um die Entscheidung zu treffen. Die Funktion hingegen interessiert sich nicht daür, was mit dem Wert passiert, den sie zurückgibt. Sie gibt einfach einen Wert zurück. Wenn dieser Wert sich aus (zu diesem Zeitpunkt) undefinierten Werten zusammensetzt, dann ist das eben ein zufälliger Wert.
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.