Return 0 ou rerurn EXIT_SUCCESS
Fermé
nanur
-
24 mai 2014 à 16:16
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 26 mai 2014 à 17:19
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 26 mai 2014 à 17:19
3 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
24 mai 2014 à 16:23
24 mai 2014 à 16:23
Bonjour,
EXIT_SUCCESS est une constante dont la valeur est 0, donc effectivement il n'y a pas de différence au final à utiliser l'un ou l'autre. Cependant en terme de lisibilité du code, voir que tu sort parce qu'il y a un succès est plus parlant que voir que tu sors à 0. En règle général dans un programme, évites les "valeurs magiques" dont on ne sait pas d'où elles sortent, stocke les plutôt dans une constante au nom explicite, comme ici.
EXIT_SUCCESS est une constante dont la valeur est 0, donc effectivement il n'y a pas de différence au final à utiliser l'un ou l'autre. Cependant en terme de lisibilité du code, voir que tu sort parce qu'il y a un succès est plus parlant que voir que tu sors à 0. En règle général dans un programme, évites les "valeurs magiques" dont on ne sait pas d'où elles sortent, stocke les plutôt dans une constante au nom explicite, comme ici.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
24 mai 2014 à 16:32
24 mai 2014 à 16:32
C'est pareil. C'est selon le choix du programmeur.
Certains préfèrent l'un d'autre l'autre.
return 0; est tellement connu qu'il est accepté.
Certains préfèrent l'un d'autre l'autre.
return 0; est tellement connu qu'il est accepté.
ElementW
Messages postés
4816
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
5 octobre 2021
1 228
24 mai 2014 à 18:23
24 mai 2014 à 18:23
"il est accepté": il ne l'était pas avant? Du moins la "condition" (popularité) de ta phrase donne l'impression qu'il ne l'était pas...
(Ou alors c'est ton avis perso, je présume)
(Ou alors c'est ton avis perso, je présume)
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
24 mai 2014 à 18:50
24 mai 2014 à 18:50
Si si, ça a toujours été accepté. Mais return 0; est si courant qu'on le trouve fréquemment à la place de return EXIT_SUCCESS;
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 094
Modifié par [Dal] le 26/05/2014 à 17:24
Modifié par [Dal] le 26/05/2014 à 17:24
Salut nanur,
et bonjour aux autres contributeurs à ce fil,
Dans l'esprit, AMHA, je pense que ce define est plus destiné à être utilisé en relation avec
Lorsque
Comme cela a été dit, ici, le passage de 0 pour terminer le programme signifie terminer le programme en disant que "tout va bien", alors que, par ailleurs, la fonction (autre que
En revanche, à mon sens, utiliser EXIT_SUCCESS avec return dans une fonction autre que main serait trompeur et une utilisation à mauvais escient.
Dal
et bonjour aux autres contributeurs à ce fil,
Dans l'esprit, AMHA, je pense que ce define est plus destiné à être utilisé en relation avec
exit(), le standard citant ces defines dans ce contexte (même si cela ne pose strictement aucun problème de l'utiliser avec return dans la fonction main).
Lorsque
exit()est utilisé pour terminer le programme depuis une fonction du programme autre que
main(), il est plus explicite pour le lecteur de lire
exit(EXIT_SUCCESS);plutôt que
exit(0);pour distinguer de façon évidente la signification du 0 dans une autre contexte possible dans cette fonction.
Comme cela a été dit, ici, le passage de 0 pour terminer le programme signifie terminer le programme en disant que "tout va bien", alors que, par ailleurs, la fonction (autre que
main()) peut contenir un
return 0;, terminant cette fonction, et non le programme, qui pourra être interprété dans le cadre d'un test de la valeur de retour comme signifiant "faux" (et non pas "tout va bien"). La valeur
0signifiant "faux" en C dans l'évaluation d'une condition.
En revanche, à mon sens, utiliser EXIT_SUCCESS avec return dans une fonction autre que main serait trompeur et une utilisation à mauvais escient.
Dal