Wie verlassen Sie eine Void-Funktion in C ++?


158

Wie können Sie eine Funktion vorzeitig verlassen, ohne einen Wert zurückzugeben, wenn es sich um eine ungültige Funktion handelt? Ich habe eine void-Methode, die ihren Code nicht ausführen muss, wenn eine bestimmte Bedingung erfüllt ist. Ich möchte wirklich nicht die Methode ändern müssen, um tatsächlich einen Wert zurückzugeben.


9
Trotzdem ist dies eine wirklich einfache Frage, die ich positiv bewertet habe, weil ich das gleiche Problem hatte, als ich mein erstes C-Programm schrieb :)
rmeador

11
@itsbunnies: Wie an anderer Stelle erwähnt, gibt es keine Programmierfragen, die zu einfach sind, um auf SO gestellt zu werden. Wenn Sie Probleme damit hatten, hat dies auch jemand anderes in der Vergangenheit und jemand anderes in der Zukunft.
Bill the Lizard

@ BilltheLizard: Was ist mit dem ersten Programm, das jemals dieses Problem hatte? Wer hatte dieses Problem in seiner Vergangenheit? ;-)
flarn2006

1
Hatte gerade diese Frage selbst :)
Moldau

Beachten Sie, dass Sie eine Funktion immer neu schreiben können, um immer ganz unten zurückzukehren. Dies ist ein strukturiertes Programmierprinzip (ein Eintrittspunkt, ein Austrittspunkt).
Malcolm McLean

Antworten:


195

Verwenden Sie eine return-Anweisung!

return;

oder

if (condition) return;

Sie müssen (und können) keine Werte angeben, wenn Ihre Methode zurückgibt void.


2
Noch mehr auf den Punkt gebracht: Sie dürfen KEINEN Rückgabewert angeben, wenn Ihre Methode void zurückgibt.
Jonathan Leffler

Aha, wenn wir also schreiben, kehre zurück; nichts zurückzugeben bedeutet, sich selbst nichtig zu machen, oder? nichtig bedeutet sowieso nichts !! Hmm ich verstehe es jetzt.
Quantum231

@ quantum321 Ich denke, der Rückgabewert ist technisch undefiniert, nicht ungültig, aber es ist nützlich, ihn als "ungültig" zu betrachten.
Dr. Person Person II

@ Dr.PersonPersonII mit 'wenn Ihre Methode "void" zurückgibt', meinte ich die rein syntaktische Ansicht des als zurückgegeben deklarierten Rückgabetyps der Methode void. Technisch gibt die Methode nichts zurück. Dies unterscheidet sich von der Rückgabe undefiniert.
Mehrdad Afshari

2
Eigentlich kannst du auch schreiben return void():)
Lightness Races in Orbit

12

Du meinst so?

void foo ( int i ) {
    if ( i < 0 ) return; // do nothing
    // do something
}

10
void foo() {
  /* do some stuff */
  if (!condition) {
    return;
  }
}

Sie können das Schlüsselwort return einfach wie in jeder anderen Funktion verwenden.


-1

Ich weiß, dass die Frage bereits beantwortet ist und die Verwendung einer returnAnweisung den Job erledigt. Alternativ können Sie aber auch den Rest der Funktion in den elseBlock der ifBedingung aufnehmen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.