Wie erhalten C ++ - Programme ihren Rückgabewert, wenn in der Funktion kein Rückgabewert angegeben ist?

Ich habe vor kurzem einen Beitrag geschrieben:
Seltsamer Fehler in C ++ - Programm: Entfernen des Programms "Printout Breaks"

... in dem ich versuchte, ein scheinbar verblüffendes Problem zu lösen, bei dem das Entfernen einer cout-Anweisung mein Programm beschädigen würde.

ie sich herausstellte, bestand mein Problem darin, dass ich vergessen hatte, mein Wahr / Falsch-Erfolgsflag zurückzugeben, das ich später für die Logik verwendet

Aber anscheinend wurde ETWAS zurückgegeben, und dass etwas immer wahr war, wenn ich das Cout rein ließ, aber scheinbar "magisch" falsch wurde, als ich es herausnahm.

Meine Frage an euch alle lautet:
Was bestimmt, was eine c ++ - Funktion zurückgibt, wenn in der Funktion kein Rückgabebefehl ausgeführt wird? Gibt es eine Logik dafür?

Offensichtlich ist es eine schlechte Idee, den Rückgabetyp zu vergessen. In diesem Fall lag es jedoch hauptsächlich an der Art meines Programms - einem schnellen Hack-Job. Ich entschied später, dass es sich nicht gelohnt hat, einen Algorithmus zu implementieren, um den Erfolg / Misserfolg des Funktionsaufrufs zu bestimmen - aber versehentlich den Code zurückgelassen, der von der Rückgabe abhängt.

Bafflingly G ++ gab mir keine Warnungen oder Fehler beim Kompilieren der ausführbaren Datei wie folgt:

g++ main.cc -g -o it_util

Meine Version ist: g ++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-44)

Wiederholen, um anderen zukünftige Frustrationen zu ersparen, falls sie denselben dummen Fehler machen und auf dasselbe scheinbar unberechenbare Verhalten stoßen, kann jeder Aufschluss darüber geben, von wo eine Funktion ohne Rückgabe ihren Rückgabewert erhält ??

Vielen Dank!

Antworten auf die Frage(12)

Ihre Antwort auf die Frage