Prennons par exemple la fonction f(x) = x*x - 3 : Elle prend en argument le nombre x puis retourne x*x - 3. On dit que x*x - 3 est la valeur retournée par f. Ainsi, la valeur de f(1) est -2. En C, on dit que f(1) est une expression et que sa valeur est -2.
1 2 3 4 5
| On a donc :
int f(int x)
{
return x*x - 3;
} |
Puis considérons l'instruction suivante:
n = f(1); //n est supposé être de type int
Dans cette instruction, il y a d'abbord évaluation de f(1) ensuite affectation du résultat (-2) dans n. Désormais la valeur de n est -2.
Toujours dans cette instruction :
f(1) est une expression et sa valeur est -2.
n = f(1) est aussi une expression et sa valeur est -2. C'est tout à fait correct donc d'écrire par exemple (n = f(1)) + 5, ca vaut 3.
Mais n = f(1);, ca c'est une instruction, ca n'a pas de valeur.
Un autre exemple, considérons la ligne suivante :
n == 1 est une expression et sa valeur est :
0 si l'assertion est fausse
quelque chose différente de 0 si l'assertion est vraie.
On peut donc renvoyer une assertion comme valeur de retour d'une fonction.
une fonction void ne retourne aucune valeur. Exemple:
1 2 3 4
| void g(int n)
{
printf("n = %d.\n", n);
} |
g(1) n'a aucune valeur, car g ne retourne rien
Partager