Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

jpedro20

Tipo void e int

Mensagens Recomendadas

jpedro20

Boas pessoal,

é possível sair de uma função que retorna um inteiro com um printf (sem usar a função exit())?

Por exemplo:

int numeros(int p)
{
if (...)
     printf("blablabla");
else
     ...
     return p;
}

Com exit() dá mas existe outra maneira de contornar o problema?

cumprimentos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pwseo

Não estou a perceber bem a dúvida... Tens que devolver um inteiro no final da função. Se tu não o especificares, vai ser um inteiro ao acaso, o que provavelmente é bem pior que seres tu a definir um.

ou seja, ali a seguir ao printf tens que ter um return

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpedro20

Bem é o seguinte. Imaginemos a seguinte função:

int numero (int p)
{
  if (p==0)
  {
      printf("O número não pode ser somado");
      return 1;
  }
  else
  {
     p=p+p;
     return p;
  }
}

Quando invocar a função em main o que me irá aparecer se p=0 é isto:

O número não pode ser somado

1

Eu não queria que aparece-se aquele um. Se depois do printf colocares exit(EXIT_SUCCESS) em vez de return, o resultado é:

O número não pode ser somado

Estou a perguntar se existe outra forma de obter o mesmo resultado de cima sem utilizar o exit().

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Baderous

O problema é que estás a misturar código da camada de apresentação com código da camada lógica. Essa função, pelo que eu percebi, tem 2 casos:

- o caso em que somas p com p e devolves p (isto é, para p==1)

- o caso em que p==0 onde não é suposto somar nada.

Neste segundo caso, o que deves fazer é devolver um valor especial, por exemplo, -1, que vai ser aproveitado por uma função da camada de apresentação que, mediante o inteiro que receba (valor da soma ou -1), vai mostrar uma mensagem diferente (o valor da soma ou a frase "O número não pode ser somado").

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.