Sim, isso mesmo Marcio. Entretanto, acho que o objetivo dele não é nem a complexidade do código em si, e sim, brincar com a chamada de métodos.
O código que ele apresentou pode não ser a melhor das opções, mas está certo.
#include <stdio.h>
int mostrarResultado(int);
int mostrarResultado(int n){
if(n>0){
return n;
}
}
main(){
int n, n1;
printf("Numero: ");
scanf("%d", &n);
n1 = mostrarResultado(n);
printf("Numero: %d\n", n1);
}
O problema, provavelmente está aqui:
n1 = mostrarResultado(n);
Uma vez que ele define a variável “n1” como o retorno de “mostrarResultado(n)” independente do que ele retornar — positivo ou negativo. “n” e “n1” não são, como diria no Java, variáveis de instância, logo, os valores de inicialização delas são “aleatórios”, ae quando vai para “mostrarResultado(int n)”, no if a condição não é verdadeira e como não tem outro retorno, que não implica em erro fatal, o programa atribui a “n1” o valor do que foi passado como argumento. Algo do tipo — não tem nada aqui para eu fazer com isso, então toma ele de volta. Logo, o valor é atribuído a “n1” independente de ser positivo ou negativo. Você poderia definir o que você quer que retorne caso ele seja negativo. Tipo:
int mostrarResultado(int);
int mostrarResultado(int n){
if(n>0){
return n;
} else{
return 0;
}
Nesse caso, quando o número informado fosse negativo, seria exibido 0. Se você quer que seja exibido somente se for positivo, o condicional tem que estar com o printf, porque como ele está fora, ele vai ser executado independente de nada, ae você só pode alterar o que vai ser exibido, e não se vai ou não exibir. Espero ter ajudado.