Salut,
J'ai trouvé ce bout de code dans une discussion et je ne comprends pas son fonctionnement.
A qui est retourné le return ?
Merci.Code:
1
2
3
4
5
6
7
8
9
10 while(1) { ch=getch(); switch (ch) { case 'o': return 1; case 'n': return 0; } }
Version imprimable
Salut,
J'ai trouvé ce bout de code dans une discussion et je ne comprends pas son fonctionnement.
A qui est retourné le return ?
Merci.Code:
1
2
3
4
5
6
7
8
9
10 while(1) { ch=getch(); switch (ch) { case 'o': return 1; case 'n': return 0; } }
Oula.Citation:
Envoyé par gauguin
Euh tu sais ce que fait return ?
Ben ici dans ton code, ça sort de la fonction (et dans n'importe quel autre code aussi d'ailleurs)
Si le type tape au clavier un 'o', ça retourne 1, si il a appuyé sur 'n' ça retourne 0.
en fait c'est une fonction externe à main() .
Quand on entre 'o' et seulement 'o' le programme s'arrête.
J'imagine que c'est le but voulu.
voilà le prototype :
int testouinon(void);
Ce que je ne comprends pas c'est pourquoi la fonction s'arrête quand on entre 'o' puisqu'on a while(1).
Ben parce que y'a un return qui fait sortir de la fonction.Citation:
Envoyé par gauguin
il faut remarquer que ce bout de code sert a prendre la reponse de l'utilisateur, il devar en trer soit 'o'(pour "oui" je crois), soit 'n'(pour "non"). Et le codeur veut ainsi s'assurer que l'utilisateur n'entrera pas de reponse ambigu comme par exemple 's'. donc tant que l'utilisateur n'entrera pas une reponse non ambigu on ne sortira pas de la boucle. ainsi, s'il entre 'o', le bout de code retourne 1 et 0 s'il entre plutôt 'n';
Ok , compris.
Comme on sort de la fonction avec 'o', par la force des choses, le programme s'arrête puisqu'il n'a "personne" à qui envoyer le return.
Merci.
?????
Qu'est-ce que tu essaies de dire par ça ?
return implique un retour à la fonction appelante, pas nécessairement la fin du programme!
Je ne comprenais juste pas à la base comment s'arrêtait la fonction.
Je l'ai sortie de son contexte pour isoler la partie que je ne comprenais pas, à savoir pourquoi la boucle stoppe quand on entre 'o' et pas lorqu'on entre autre chose puisqu'on a while(1).
En y re-réfléchissant je ne comprend toujours pas pourquoi elle s'arrête dans le cas de 'o' et pas dans d'autres cas puisqu'il n'y a rien dans ce bout de code qui indique quand elle doit s'arrêter.
Ce code là se trouve dans quelle fonction ? Si c'est dans la fonction main alors c'est la fin du programme.
Sinon ca entraine le retour à la fonction appelante donc si dans ton main tu appelles une fonction F() qui execute ce code alors return te fais retourné dans ton main et execute donc la suite.
Si, l'instruction return indique qu'il faut retourner à la fonction appelante, donc on arrête la boucle! Ainsi, lorsque l'utilisateur frappe la touche 'o', l'instruction return 1 est exécutée, on quitte la fonction testouinon() qui retourne la valeur 1 pour indiquer que l'événement "frappe sur la touche 'o' " a été rencontré.Citation:
Envoyé par gauguin
Thierry