web-dev-qa-db-fra.com

Différence entre "return 0" et "exit (0)"

Y a-t-il une différence entre return 0 Et exit (0) lors de l'utilisation dans une fonction? Si oui, quand dois-je utiliser return 0 Ou exit (0) dans une fonction?

19
haccks

return quitte la fonction tandis que exit quitte le programme.

Dans la fonction main, l'exécution de l'instruction return 0; Ou l'appel de la fonction exit(0) appellera les gestionnaires atexit enregistrés et entraînera l'arrêt du programme.

22
ouah

exit 0 Est une erreur de syntaxe en C. Vous pouvez avoir exit(0) qui est à la place un appel à une fonction de bibliothèque standard.

La fonction exit quittera le programme entier, renvoyant le code de sortie fourni au système d'exploitation. L'instruction return quitte uniquement la fonction actuelle, donnant à l'appelant le résultat spécifié.

Ils sont les mêmes que lorsqu'ils sont utilisés dans main (car quitter la fonction main mettra fin au programme).

Normalement, exit n'est utilisé que dans les cas d'urgence où vous souhaitez mettre fin au programme car il n'existe aucun moyen raisonnable de poursuivre l'exécution. Par exemple:

//
// Ensure allocation of `size` bytes (will never return
// a NULL pointer to the caller).
//
// Too good to be true? Here's the catch: in case of memory
// exhaustion the function will not return **at all** :-)
//
void *safe_malloc(int size) {
    void *p = malloc(size);
    if (!p) {
        fprintf(stderr, "Out of memory: quitting\n");
        exit(1);
    }
    return p;
}

Dans ce cas, si la fonction a appelle la fonction b qui appelle la fonction c qui appelle safe_malloc, Vous voudrez peut-être quitter le programme sur place au lieu de revenir à c un code d'erreur (par exemple un pointeur NULL) si le code n'est pas écrit pour gérer les échecs d'allocation.

10
6502

Oui, car il n'y a pas de déclaration appelée exit. Je suppose que vous voulez dire la fonction exit ?

Dans ce cas, il y a une grande différence : la fonction exit quitte le processus, en d'autres termes le programme est terminé. L'instruction return revient simplement de la fonction courante.

Ils ne sont similaires que s'ils sont utilisés dans la fonction main.

8
  • return est une instruction qui renvoie le contrôle à la fonction appelante.
  • exit est un appel système qui met fin au processus en cours, c'est-à-dire au programme en cours d'exécution.

Dans main() les return 0; Et exit(0); effectuent la même chose.

REMARQUE: vous devez inclure #include<stdlib.h>.

0
0decimal0