Bonjour.
Je préviens tout de suite que ça sent la question très con![]()
Mon interrogation du jour vient de l'instruction return. Dans le désordre :
a t-il un comportement défini ?
Code Numero 1 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 int main(void) { printf("\nTest d'un non retour au lieu d'un int : %d",retourHasardeux()); return 0; } int retourHasardeux(void) { //NOP }
Avec Codeblocks sous XP, ça me renvoit zéro.
EDIT : Pas de message à la compilation/édition des liens. --> en fait j'ai quand même un warning.
Même question en modifiant la fonction. J'observe le même comportement personnellement.
Code Numéro 2 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 int main(void) { printf("\nTest d'un non retour au lieu d'un int : %d",retourHasardeux()); return 0; } int retourHasardeux(void) { return; }
EDIT : et le message de warning est différent.
Si j'ai un return dans la fonction, peut-elle encore avoir un retour de type void?
Code Numéro 3 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void retourHasardeux(void) { return; }
Et enfin pour terminer, est-ce que c'est mal de faire ça :
J'entends dire que l'usage d'un return pour couper court à l'exécution d'une fonction n'est pas vraiment une règle de bon usage. Vos avis ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 type grosseFonction(type nom) { if(une condition) { return; } else { // faire plein de choses return unTruc; } }
Encore une fois merci pour vos réponses ?![]()
Partager