2010-07-31 6 views
1

Possible en double:
What should main() return in C/C++?programme compile avec et sans retour 0

C'est une question assez basique, je suppose.

Je programme depuis un an maintenant mais un de mes amis m'a surpris avec une question plutôt stupéfiante.

Les programmes qui commencent par 'int main()' sur C++ semblent se compiler parfaitement même avec 'return 0;' retiré et non remplacé par une autre déclaration de retour. Et sans une déclaration de retour du tout, le programme montre toujours que «Processus retourné 0».

Est-ce que cela a une explication? Désolé si ma question est idiote!

+0

double possible de [Que devrait en retour principal C/C++?()] (Http://stackoverflow.com/questions/204476/what-should-main-return-in-cc) – polygenelubricants

Répondre

1

De la réponse acceptée de What should main() return in C/C++?

Il est également intéressant de noter que, en C++, int main() peut être laissé sans valeur de retour à quel point sa valeur par défaut retour 0. Ceci est également vrai avec Programme C99. Si le retour 0 doit être omis ou non est ouvert au débat.

5

§3.6.1/5:

Une instruction de retour dans main a pour effet de laisser la fonction principale (destruction d'objets ayant une durée de stockage automatique) et appelant exit avec la valeur de retour en tant que argument. Si le contrôle atteint la fin de la principale sans rencontrer une déclaration de retour, l'effet est celui d'exécuter return 0;