Déclaration, Type et Retour
Dans la leçon précédente, vous avez découvert l'anatomie de base des fonctions :
main.c
123456func_type func_name(arguments_placeholder) { // The core functionality of the function // The resulting outcome after function execution return function_output; }
Déclaration
Avant d'utiliser une fonction, elle doit être déclarée. Appeler une fonction avant sa déclaration entraînera une erreur.
Vous pouvez soit déclarer la fonction entière en même temps que sa définition (comme illustré ci-dessus), soit utiliser un prototype, que nous aborderons en bonus à la fin de ce segment.
Types de fonctions et valeurs de retour
Le type de la fonction informe le compilateur sur le type de données du résultat de la fonction. Par exemple, si notre fonction calcule la somme de deux entiers, nous attendons alors un entier comme résultat.
main.c
12345678int sumFunction() { int number1 = 6; int number2 = 10; int result = number1 + number2; return result; }
Une incompatibilité entre le type de données et le type de retour peut rendre la fonction (ou même l'ensemble du programme) défaillante.
main.c
12345678int sumFunction() { double number1 = 6.985; double number2 = 231.465; double result = number1 + number2; return result; // This will lead to an incorrect result }
Lors de l'addition de valeurs non entières, un résultat précis est attendu. Cependant, en raison d'une incohérence de type, le résultat est erroné.
main.c
1234567891011121314151617#include <stdio.h> int func() { double number1 = 6.985; // Not `int` nubmer double number2 = 231.765; // Not `int` number double result = number1 + number2; return result; // Output of function } int main() { // Call and immediately printing the result of our function printf("Expected Result is 238.75, but result is %d\n", func()); return 0; }
Deux facteurs principaux contribuent à cette erreur :
- Un type de retour incorrect (doit être
double) ; - L'utilisation d'un spécificateur de format incorrect (
%d) dans la fonctionprintf()(doit être%f).
La version correcte serait :
main.c
1234567891011121314151617#include <stdio.h> double func() { double number1 = 6.985; // `int` nubmer double number2 = 231.765; // `int` number double result = number1 + number2; return result; // Output of function } int main() { // Print the result of our function printf("Expected Result is 238.75, and result is %f\n", func()); return 0; }
Cela implique que le résultat de la fonction peut être directement affecté à des variables/tableaux ou même transmis à d'autres fonctions. Un exemple de ceci est l'utilisation du résultat avec la fonction printf dans les scénarios ci-dessus.
Le spécificateur de format pour les nombres à virgule flottante est %f.
Il convient également de mentionner qu'une fonction peut contenir plusieurs instructions return, chacune s'activant sous des conditions distinctes.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you explain more about function prototypes?
What happens if I use the wrong return type in my function?
Can you give an example of a function with multiple return statements?
Awesome!
Completion rate improved to 2.63
Déclaration, Type et Retour
Glissez pour afficher le menu
Dans la leçon précédente, vous avez découvert l'anatomie de base des fonctions :
main.c
123456func_type func_name(arguments_placeholder) { // The core functionality of the function // The resulting outcome after function execution return function_output; }
Déclaration
Avant d'utiliser une fonction, elle doit être déclarée. Appeler une fonction avant sa déclaration entraînera une erreur.
Vous pouvez soit déclarer la fonction entière en même temps que sa définition (comme illustré ci-dessus), soit utiliser un prototype, que nous aborderons en bonus à la fin de ce segment.
Types de fonctions et valeurs de retour
Le type de la fonction informe le compilateur sur le type de données du résultat de la fonction. Par exemple, si notre fonction calcule la somme de deux entiers, nous attendons alors un entier comme résultat.
main.c
12345678int sumFunction() { int number1 = 6; int number2 = 10; int result = number1 + number2; return result; }
Une incompatibilité entre le type de données et le type de retour peut rendre la fonction (ou même l'ensemble du programme) défaillante.
main.c
12345678int sumFunction() { double number1 = 6.985; double number2 = 231.465; double result = number1 + number2; return result; // This will lead to an incorrect result }
Lors de l'addition de valeurs non entières, un résultat précis est attendu. Cependant, en raison d'une incohérence de type, le résultat est erroné.
main.c
1234567891011121314151617#include <stdio.h> int func() { double number1 = 6.985; // Not `int` nubmer double number2 = 231.765; // Not `int` number double result = number1 + number2; return result; // Output of function } int main() { // Call and immediately printing the result of our function printf("Expected Result is 238.75, but result is %d\n", func()); return 0; }
Deux facteurs principaux contribuent à cette erreur :
- Un type de retour incorrect (doit être
double) ; - L'utilisation d'un spécificateur de format incorrect (
%d) dans la fonctionprintf()(doit être%f).
La version correcte serait :
main.c
1234567891011121314151617#include <stdio.h> double func() { double number1 = 6.985; // `int` nubmer double number2 = 231.765; // `int` number double result = number1 + number2; return result; // Output of function } int main() { // Print the result of our function printf("Expected Result is 238.75, and result is %f\n", func()); return 0; }
Cela implique que le résultat de la fonction peut être directement affecté à des variables/tableaux ou même transmis à d'autres fonctions. Un exemple de ceci est l'utilisation du résultat avec la fonction printf dans les scénarios ci-dessus.
Le spécificateur de format pour les nombres à virgule flottante est %f.
Il convient également de mentionner qu'une fonction peut contenir plusieurs instructions return, chacune s'activant sous des conditions distinctes.
Merci pour vos commentaires !