Come si esce da una funzione nulla in C ++?


158

Come si può uscire prematuramente da una funzione senza restituire un valore se è una funzione nulla? Ho un metodo nullo che non ha bisogno di eseguire il suo codice se una certa condizione è vera. Non voglio davvero cambiare il metodo per restituire effettivamente un valore.


9
Nonostante sia una domanda davvero semplice, ho votato perché avevo lo stesso problema quando ho scritto il mio primo programma in C :)
rmeador,

11
@itsbunnies: Come menzionato altrove, non ci sono domande di programmazione troppo semplici per essere poste su SO. Se hai avuto problemi con questo, così ha qualcun altro in passato e anche qualcun altro in futuro.
Bill the Lizard,

@BilltheLizard: E il primo programma che ha mai avuto quel problema? Chi ha avuto quel problema nel suo passato? ;-)
flarn2006

1
ho

Nota che puoi sempre riscrivere una funzione per tornare sempre in fondo, che è un principio di programmazione strutturato (un punto di entrata, un punto di uscita),
Malcolm McLean

Risposte:


195

Usa una dichiarazione di ritorno!

return;

o

if (condition) return;

Non è necessario (e non è possibile) specificare alcun valore, se il metodo restituito void.


2
Ancora di più al punto: NON è necessario specificare alcun valore di ritorno se il metodo restituisce nullo.
Jonathan Leffler,

Ah, quindi quando scriviamo return; non restituire nulla significa restituire il vuoto stesso eh? vuoto non significa nulla !! Hmm ho capito ora.
quantum231,

@ quantum321 Penso che il valore di ritorno sia tecnicamente indefinito, non vuoto, ma è utile pensarlo come "vuoto".
Dr. Person Person II II

@ Dr.PersonPersonII per 'se il tuo metodo restituisce "vuoto", intendevo la vista puramente sintattica del tipo di ritorno del metodo dichiarato come void. Tecnicamente, il metodo non restituisce nulla. che è diverso dal ritorno indefinito.
Mehrdad Afshari,

2
In realtà puoi return void()anche scrivere :)
Lightness Races in Orbit il

12

Intendi così?

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

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

Puoi semplicemente usare la parola chiave return come faresti in qualsiasi altra funzione.


-1

So che la domanda ha già una risposta e l'utilizzo di una returndichiarazione fa il lavoro. Ma in alternativa puoi anche includere il resto della funzione nel elseblocco della ifcondizione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.