Como você sai de uma função nula em C ++?


158

Como você pode sair prematuramente de uma função sem retornar um valor se for uma função nula? Eu tenho um método nulo que precisa não executar seu código se uma determinada condição for verdadeira. Eu realmente não quero mudar o método para realmente retornar um valor.


9
Apesar de que esta é uma pergunta muito simples, eu upvoted porque eu tive o mesmo problema quando eu escrevi meu primeiro programa C :)
rmeador

11
@itsbunnies: Como mencionado em outro lugar, não há perguntas de programação muito simples para serem feitas no SO. Se você teve problemas com isso, o mesmo aconteceu com outra pessoa no passado e outra no futuro.
Bill o Lagarto

@ BilltheLizard: E o primeiro programa que teve esse problema? Quem teve esse problema em seu passado? ;-)
flarn2006

1
só tinha essa pergunta a mim mesmo :)
moldovean

Note que você sempre pode reescrever uma função a retornar sempre na parte inferior, que é um princípio programação estruturada (um ponto de entrada, um ponto de saída),
Malcolm McLean

Respostas:


195

Use uma declaração de retorno!

return;

ou

if (condition) return;

Você não precisa (e não pode) especificar nenhum valor, se o seu método retornar void.


2
Ainda mais importante: você NÃO deve especificar nenhum valor de retorno se o seu método retornar nulo.
31416 Jonathan Leffler

Aha, então quando escrevemos return; não retornar nada significa retornar anular a si mesmo, eh? vazio significa nada de qualquer maneira !! Hmm, entendi agora.
quantum231

@ quantum321 Acho que o valor de retorno é tecnicamente indefinido, não nulo, mas pensar nele como "nulo" é útil.
Dr. Pessoa Pessoa II

@ Dr.PersonPersonII por 'se seu método retornar "nulo"', eu quis dizer a visão puramente sintática do tipo de retorno do método declarado como void. Tecnicamente, o método não retorna nada. que é diferente de retornar indefinido.
Mehrdad Afshari 20/03/2013

2
Na verdade, você também pode escrever return void():) #
Lightness Races in Orbit

12

Você quer dizer assim?

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

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

Você pode usar a palavra-chave return exatamente como faria em qualquer outra função.


-1

Sei que a pergunta já foi respondida e o uso de uma returndeclaração faz o trabalho. Mas, como alternativa, você também pode incluir o restante da função no elsebloco da ifcondição.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.