Que signifie le retour à zéro en langage C?


Meilleure réponse

Je suppose que vous parlez de la fonction «main ()»?

Sous UNIX / Linux où C a été inventé (et peut-être dans dautres OS) lorsquun programme se ferme, il renvoie un «état de sortie» que le système qui la démarré peut utiliser pour dire sil a réussi ou échoué.

Un résultat renvoyé de zéro signifie « Tout a fonctionné correctement! » – un résultat différent de zéro indique une sorte de code d’erreur.

Ce n’est pas beaucoup (voire pas du tout) utilisé dans les environnements graphiques où les gens lancent des programmes à partir d’une icône ou autre. Mais dans les applications en ligne de commande, c’est une aubaine.

Prenons par exemple l’outil «make», qui est utilisé pour compiler et lier des applications complexes. Les différents compilateurs et éditeurs de liens font un « return 0 » lorsque le programme sur lequel ils travaillent compilé correctement – ou ils « retournent 1 » sil ne compile pas.

Le programme « make » examine le retour statut de chaque programme quil exécute – et annule la construction si lun deux renvoie autre chose que zéro.

Cest une chose vraiment pratique.

Jai donc un programme que jai écrit que effectue un certain traitement dimage. Si le fichier quil lit est corrompu, il fait un «retour 2» – si le fichier nexiste pas, il fait un «retour 1» et ce nest que si tout a fonctionné correctement quil «renvoie 0».

Maintenant – si jai un programme compliqué à construire qui a des images intégrées dans son package de publication – je peux faire en sorte que mon Makefile déclenche le programme de traitement dimage – et sil échoue pour une raison quelconque – il interrompra le « make » run donc je peut le réparer.

Tous les outils de ligne de commande UNIX / Linux renvoient une valeur non nulle en cas déchec – donc même si vous utilisez simplement le programme standard «rm» pour supprimer un fichier – cela fera un «Return 0» si le fichier a été supprimé avec succès ou un «return 1» sil na pas pu être supprimé pour une raison quelconque.

Quelques programmes renvoient des codes différents en fonction de ce qui a exactement mal tourné – mais cest assez inhabituel.

Notez également que lorsque vous appelez la fonction «exit (0)» – le paramètre «0» est également le statut de retour… alors faites «exit (0)» lorsque les choses fonctionnent bien et « exit (1) « quand ils ne le sont pas.

Réponse

Il y a un Dans de nombreux endroits différents, vous pouvez exécuter une instruction return 0 en C, donc cette question va recevoir une variété de réponses.

Laissez je réponds à un cas spécifique:

int main(int argc, char *argv[])

{

...

return 0;

}

Pourquoi retournons-nous 0 à partir de main?

Dans la famille de systèmes dexploitation * IX, illustrée par dabord UNIX puis Linux, un programme existe avec un seul code de sortie entier, nominalement utilisé pour indiquer le succès ou léchec.

Dans la plupart des cas, une valeur de 0 indique un succès, et une valeur différente de zéro est un échec, la valeur indiquant généralement des informations derreur spécifiques.

Les programmes C et C ++ exécutés sur les systèmes * IX fournissent ce code de sortie soit par une valeur entière transmise à la fonction exit () de la bibliothèque standard, soit par lentier renvoyé par main () .

Donc, dans ce cas, nous retournons 0 de main pour indiquer aux systèmes * IX que le programme sest terminé avec un code de réussite.

-Mark

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *