Return 0 ou rerurn EXIT_SUCCESS
nanur
-
[Dal] Messages postés 6122 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6122 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Quel est la différence entre return 0 et return EXIT_SUCCESS ? Je sais que vous allez me dire qu'il y en a pas, mais pourquoi il y a des gens qui mettent plutôt l'un que l'autre et vise versa. D'après vous, lequel il faut le mieux employé ? Parce que return EXIT_SUCCESS nécessite d'inclure stdlib.h, donc si on fait un petit programme, il y a peut-être pas beaucoup d'intérêt :oO
Quel est la différence entre return 0 et return EXIT_SUCCESS ? Je sais que vous allez me dire qu'il y en a pas, mais pourquoi il y a des gens qui mettent plutôt l'un que l'autre et vise versa. D'après vous, lequel il faut le mieux employé ? Parce que return EXIT_SUCCESS nécessite d'inclure stdlib.h, donc si on fait un petit programme, il y a peut-être pas beaucoup d'intérêt :oO
3 réponses
-
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. -
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é. -
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 avecexit()
, 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).
Lorsqueexit()
est utilisé pour terminer le programme depuis une fonction du programme autre quemain()
, il est plus explicite pour le lecteur de lireexit(EXIT_SUCCESS);
plutôt queexit(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 quemain()
) peut contenir unreturn 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 valeur0
signifiant "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