web-dev-qa-db-fra.com

Alors que veut dire "retour 0"?

Je maîtrise assez bien PHP, mais j'ai commencé à manipuler C. J'ai vu le code

return 0;

à la fin des fonctions qui ne renvoient pas de valeur. Ceci n'est pas utilisé en PHP, car si une fonction n'a pas de retour, une valeur NULL est automatiquement renvoyée. 

Tout ce que je demande, c'est, en anglais simple, que fait réellement le return 0? Est-ce que c'est comme PHP, où il retourne son argument comme valeur de l'appel de fonction? Est-ce juste une bonne pratique?

Je sais que cette question a déjà été posée à plusieurs reprises, mais je la pose du point de vue d'un développeur PHP. Les réponses apportées par Google n'ont pas été aussi concises.

14
Starkers

Est-ce que c'est comme php, où il retourne son argument comme la valeur du appel de fonction? Est-ce juste une bonne pratique?

Oui, PHP et de nombreuses autres langues ont emprunté le mot clé return à "C". Et dans toutes les langues, le mot clé return a la même fonction - pour revenir de la fonction. Tout ce qui suit le mot clé return est la valeur renvoyée à l'appelant.

Est-ce une bonne pratique? Oui et non. Toutes les fonctions devraient ne renvoient pas de valeur. Et même dans la bibliothèque standard, quelques-uns ne renvoient aucune valeur. Par conséquent, leur type de retour est void.

Mais la fonction main doit renvoyer 0 (aussi EXIT_SUCCESS) pour indiquer que le programme a été exécuté avec succès. Et -1 sinon (aussi EXIT_FAILURE)

EDIT: (Merci à KeithThompson):

EXIT_FAILURE est défini par l'implémentation. 1 est une valeur commune de EXIT_FAILURE, mais l’essentiel est que vous ne devez pas savoir.

16
Aniket Inge

Pour des raisons historiques, il est possible d'écrire return 0; pour revenir d'une fonction déclarée comme void, comme ceci:

void foo( /* arguments */ )
{
  /* do things */
  return 0;
}

Cela ne fait rien et le 0 (ou ce que vous y mettez) est jeté. En outre, les compilateurs sensibles vous donneront un message d’avertissement si vous le faites. Alors ne fais pas ça.

8
Brooks Moses

Les fonctions en C renvoient int par défaut, si aucun autre type de retour n'est défini. return 0 serait une bonne pratique pour s'assurer que la fonction renvoie une valeur connue, par opposition à une valeur aléatoire, au cas où l'appelant examinerait la valeur de retour.

6
John

Il retourne littéralement un int de 0. 

5
rocky

Le langage de programmation C permet aux programmes sortant ou sortant de la fonction principale de signaler un succès ou un échec en renvoyant un entier ou en renvoyant les macros EXIT_SUCCESS et EXIT_FAILURE. Sous Unix, ils sont égaux à 0 et 1 respectivement. Un programme C peut également utiliser la fonction exit() pour spécifier le statut entier ou la macro de sortie comme premier paramètre.

Hormis les macros EXIT_SUCCESS et EXIT_FAILURE, la norme C ne définit pas la signification des codes de retour. Les règles d'utilisation des codes de retour varient d'une plate-forme à l'autre.

1
KRUPASINDHU MOHANTY

En C, vous ne devez pas renvoyer de valeur uniquement si vous déclarez une fonction avec void au début de celle-ci ..___ Premier exemple

#include <stdio.h>
 int main()
{
   printf("Hello World!");
    return 0; // you have to use return because main starting with int
}

Deuxième exemple:

#include <stdio.h>
void main()
{
printf("Hello World!");
//in this case return is useless, main is a void function

}
0
enjoytech