Jump to content

Recommended Posts

Posted

Olá eu sou novo por aqui e a programar em C, tenho alguma experiencia com outras linguagens mas com C tenho pouca.

Estou com uma duvida pois estou a tentar resolver um problema do tipo eu tenho uma função e o valor dessa função nao pode ser menor que 100, a minha duvida é, se a função for maior que 100 eu sei o que fazer, faço return do que quero, mas depois quando faço o else nao quero que devolva nada, mas tb nao posso meter null, alguém sabe como posso fazer isso?

Obrigado

Posted

Você teria um exemplo deste tipo de código de como é feito em outra linguagem que você conheça?

Nas linguagens que conheço, você precisa definir a priori qual o tipo de retorno que uma função terá, em casos que não irá devolver nada, pode utilizar o void, mas se optar por qualquer outro tipo teria que retornar algum valor sempre.

O que você pode utilizar é algum tipo de valor ou flag para indicar para o código que faz a chamada se a condição que você colocou (ser maior que 100) foi encontrada para que este código saiba o que fazer com o valor devolvido, como se vai utilizá-lo ou descartá-lo. Mas não existe como até onde eu conheça definir uma função que pode ou não retornar algo dependendo do código dela. Ou ela sempre retorna algo, ou nunca retorna (void).

Fernando Lage Bastos - MCP/MCTS/MCPD

Posted

Uma das coisas que podes fazer é abortar o programa.

if (valor >= 100) return valor;
else { fprintf(stderr, "Valor da funcao invalido\n"); exit(EXIT_FAILURE); }

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Posted

existe duas abordagens:

retornas um valor inválido demarcando que ouve erro no função:

int func_sup_100()
{
 // ...

 return valor < 100 ? 0 : valor; // como 0 é um valor inferior a 100, declara o erro na função
}

o valor de retorno significa somente o sucesso da função, o valor irá ser atribuido a um ponteiro dado como argumento da função:

int func_sup_100(int * valor)
{
 // ...

 return *valor < 100 ? -1 : 0; // -1 se o valor é inválido ou 0 se for válido
}
IRC : sim, é algo que ainda existe >> #p@p

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.