Primeiro programa - Duvida

1. Primeiro programa - Duvida

Victor Hugo
victorhugolinux

(usa Debian)

Enviado em 29/03/2015 - 23:49h

Galera, seguinte, tô iniciando na programação em C. E fiz o hello Word e já tive algumas dúvidas.
Estou utilizando o editor GEANY.

nesse algoritmo o compilador acusa um erro:

#include < stdio.h>

void main (void)

{
printf("hello world") ;

}

O erro acusado pelo compilador é : return type of main is not 'int "

E nesse segundo algoritmo:

#include <stdio.h>
int main ()

{
printf("hello world");
return 0;
}

Ao não colocar o 'return 0;' o compilador acusa erro, gostaria de saber por que esse return é necessário no final da função.

Obrigado!


  


2. Re: Primeiro programa - Duvida

Paulo
paulo1205

(usa Ubuntu)

Enviado em 30/03/2015 - 01:42h

As duas coisas estão interligadas. O padrão do C diz que:

1) Uma função que retorne qualquer tipo de dados diferente de void (que se traduz como "vazio", e signfica justamente que a função não tem valor a ser devolvido) deve explicitamente indicar o valor a ser retornado.

2) O padrão do C determina que o tipo de retorno da função main() deve ser int.

Dessas duas, decorre necessariamente que main() obrigatoriamente deve retornar explicitamente um valor inteiro.

Existe uma convenção, que não está no padrão do C mas que é seguida de modo geral tanto no mundo UNIX quanto no mundo Microsoft, segundo a qual a execução bem sucedida do programa faz com que main() devolva o valor inteiro zero, enquanto diferentes tipos de erros ou problemas durante a execução são indicados para o sistema operacional com valores de retorno não-nulos.


OBSERVAÇÃO: Ao contrário do C, C++ criou uma regra específica para a função main(), que permite omitir nela o retorno explícito do valor inteiro. Nesse caso, assume-se um “return 0;” implícito no final da função.


3. Re: Primeiro programa - Duvida

Victor Hugo
victorhugolinux

(usa Debian)

Enviado em 30/03/2015 - 12:03h

paulo1205 escreveu:

As duas coisas estão interligadas. O padrão do C diz que:

1) Uma função que retorne qualquer tipo de dados diferente de void (que se traduz como "vazio", e signfica justamente que a função não tem valor a ser devolvido) deve explicitamente indicar o valor a ser retornado.

2) O padrão do C determina que o tipo de retorno da função main() deve ser int.

Dessas duas, decorre necessariamente que main() obrigatoriamente deve retornar explicitamente um valor inteiro.

Existe uma convenção, que não está no padrão do C mas que é seguida de modo geral tanto no mundo UNIX quanto no mundo Microsoft, segundo a qual a execução bem sucedida do programa faz com que main() devolva o valor inteiro zero, enquanto diferentes tipos de erros ou problemas durante a execução são indicados para o sistema operacional com valores de retorno não-nulos.


OBSERVAÇÃO: Ao contrário do C, C++ criou uma regra específica para a função main(), que permite omitir nela o retorno explícito do valor inteiro. Nesse caso, assume-se um “return 0;” implícito no final da função.



A explicação ficou um pouco confusa mas agradeço! obrigado!






4. Re: Primeiro programa - Duvida

Perfil removido
removido

(usa Nenhuma)

Enviado em 30/03/2015 - 12:25h

return 0, significa que a função retornará 0, é usado caso for int na sua função main(). se o seu método for void, não a necessidade de colocar, porque o valor de retorno do void é 0, e não faria muito sentido ela retornar 0, sento que ela por padrão retorna 0.


5. Re: Primeiro programa - Duvida

thinomar
thinomar

(usa Linux Mint)

Enviado em 30/03/2015 - 12:36h

É exatamente o que o paulo1205 falou, mas como você achou confuso, irei explicar bem simplificadamente:

O erro retornado no primeiro algoritmo, "return type of main is not 'int' ", está sendo apresentado pois sua função main() é do tipo void, ou seja, sem retorno, e como o paulo1205 disse, a função main(), na linguagem C, exige um retorno do tipo int. Além disso, vc colocou void main(void), o que diz que haverá uma entrada de dados void na função main, coisa que não faz sentido para mim.

Já o erro do segundo algoritmo, como o paulo1205 disse também, é que a função é int, o que está correto, mas não há retorno. Sempre que se cria uma função e se atribui um tipo a ela, é necessário que haja um retorno de dados ao final da execução da mesma, e os dados devem ser do mesmo tipo da função. Ou seja, se a função é do tipo int, o retorno deve ser do tipo int, um numeral do tipo inteiro, e, por convenção, para mostrar que o programa foi executado corretamente, o retorno deve ser um 0.

Não sei se ficou mais claro, mas espero ter ajudado.


6. Re: Primeiro programa - Duvida

thinomar
thinomar

(usa Linux Mint)

Enviado em 31/03/2015 - 12:19h

Caso tenha entendido, marque a pergunta como resolvida :)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts