La fonction return en programmation C [Résolu/Fermé]

Signaler
Messages postés
4
Date d'inscription
mercredi 25 février 2015
Statut
Membre
Dernière intervention
24 mars 2015
-
Messages postés
4
Date d'inscription
mercredi 25 février 2015
Statut
Membre
Dernière intervention
24 mars 2015
-
Bonsoir, svp la fonction return (0;1;...) returne ces valeurs a quoi? au compilateur?

2 réponses

Messages postés
5460
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
20 janvier 2021
923
Bonjour harris007,

return n'est pas une fonction, c'est une instruction, d'ailleurs elle s'utilise sans parenthèses.

tu demandes :

a fonction return (0;1;...) returne ces valeurs a quoi? au compilateur?

Le compilateur est juste un programme qui traduit le code source rédigé en langage C (un fichier texte) en un code objet exécutable par la machine (un fichier binaire). Lors de l'exécution du programme il n'intervient plus.

L'instruction return est donc traduite en code exécutable pour produire un effet dans le programme lors de l'exécution.

L'effet de l'instruction return est de terminer l'exécution de la fonction dans laquelle elle s'exécute et de redonner le contrôle à la fonction appelante.

Si l'instruction return est suivie d'une expression ou d'une valeur littérale, par exemple
return a + b;
ou
return 1;
, la valeur résultante est retournée à la fonction appelante lors de l'exécution, comme résultat de la fonction.

Le type de la valeur retournée doit correspondre au type que peut retourner la fonction selon la définition de son prototype. Si son prototype est void, l'instruction return ne doit pas comporter de valeur.

#include <stdio.h>

int somme(int a, int b)
{
    return a + b;
}

int main(void)
{
    int resultat;

    resultat = somme(1, 3);

    return 0;                                                                                                                                                                                                      
}


Enfin, lorsque return avec une valeur est utilisé dans la fonction main, son effet est de terminer le programme et de renvoyer à l'environnement d'exécution la valeur. Ici, la valeur de 0 est renvoyée (qui correspond d'ailleurs au prototype int de la fonction main), qui signifie "le programme s'est bien terminé".

Le destinataire de ce code de statut de fin de programme est le système d'exploitation, ou un programme qui lance ce programme.

Dal
4
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63550 internautes nous ont dit merci ce mois-ci

Messages postés
4
Date d'inscription
mercredi 25 février 2015
Statut
Membre
Dernière intervention
24 mars 2015

Merci Dal, c'est clair.
Messages postés
8
Date d'inscription
mercredi 25 février 2015
Statut
Membre
Dernière intervention
28 février 2015

return ce qu'il y a marqué apres le return

par exemple

function a(test){
if (test)return false;
return true;
}

si on appele la fonction:

a(true); il va retourner false
donc
b=a(true)

b=false;

ta capté ?
Messages postés
8
Date d'inscription
mercredi 25 février 2015
Statut
Membre
Dernière intervention
28 février 2015

et si ya pas de b= avant ca retourne dans le vide
Messages postés
5460
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
20 janvier 2021
923
salut max83000,

"function" n'est pas utilisé en C pour déclarer une fonction, et ton prototype n'est pas explicite. Si tu retournes une valeur, tu devrais définir explicitement son type.

par ailleurs, "true" et "false" ne sont définis qu'à partir de C99 et leur usage suppose d'inclure stdbool.h (qui ne fait presque que cela) .. en pratique stdbool.h est rarement utilisé par les programmeurs C, qui savent que 0 signifie "faux" dans un test conditionnel, et que toute autre valeur que 0 sera "vrai" et ne s'embarrassent pas de rendre leur code incompatible avec C89 pour si peu, à moins d'avoir d'autres bonnes raisons.

Dal