Deklaration, Type og Retur
Fra vores forrige lektion lærte du den grundlæggende opbygning af funktioner:
main.c
123456func_type func_name(arguments_placeholder) { // The core functionality of the function // The resulting outcome after function execution return function_output; }
Deklaration
Før en funktion kan anvendes, skal den deklareres. Kald af en funktion før dens deklaration vil resultere i en fejl.
Du kan enten deklarere hele funktionen samtidig med dens definition (som vist ovenfor) eller bruge et prototype, hvilket vi vil berøre som en bonus sidst i dette afsnit.
Funktionstyper og returværdier
Funktionens type informerer compileren om datatypen for funktionens resultat. For eksempel, hvis vores funktion beregner summen af to heltal, forventer vi et heltal som resultat.
main.c
12345678int sumFunction() { int number1 = 6; int number2 = 10; int result = number1 + number2; return result; }
En uoverensstemmelse mellem datatypen og returtypen kan medføre, at funktionen (eller endda hele programmet) ikke fungerer korrekt.
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 }
Ved summering af ikke-heltal forventes et præcist resultat. Men på grund af typeinkonsistens bliver resultatet fejlagtigt.
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; }
To primære faktorer bidrager til denne fejl:
- En forkert returtype (bør være
double); - Brug af forkert format-specifikator (
%d) i funktionenprintf()(bør være%f).
Den korrekte version ville være:
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; }
Dette indebærer, at vi direkte kan tildele funktionens resultat til variabler/arrays eller endda videregive det til andre funktioner. Et eksempel på dette er, hvordan vi brugte resultatet med funktionen printf i ovenstående scenarier.
Formatangivelsen for flydende tal er %f.
Det er også værd at nævne, at en funktion kan indeholde flere return-udsagn, hvor hvert aktiveres under forskellige betingelser.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 2.63
Deklaration, Type og Retur
Stryg for at vise menuen
Fra vores forrige lektion lærte du den grundlæggende opbygning af funktioner:
main.c
123456func_type func_name(arguments_placeholder) { // The core functionality of the function // The resulting outcome after function execution return function_output; }
Deklaration
Før en funktion kan anvendes, skal den deklareres. Kald af en funktion før dens deklaration vil resultere i en fejl.
Du kan enten deklarere hele funktionen samtidig med dens definition (som vist ovenfor) eller bruge et prototype, hvilket vi vil berøre som en bonus sidst i dette afsnit.
Funktionstyper og returværdier
Funktionens type informerer compileren om datatypen for funktionens resultat. For eksempel, hvis vores funktion beregner summen af to heltal, forventer vi et heltal som resultat.
main.c
12345678int sumFunction() { int number1 = 6; int number2 = 10; int result = number1 + number2; return result; }
En uoverensstemmelse mellem datatypen og returtypen kan medføre, at funktionen (eller endda hele programmet) ikke fungerer korrekt.
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 }
Ved summering af ikke-heltal forventes et præcist resultat. Men på grund af typeinkonsistens bliver resultatet fejlagtigt.
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; }
To primære faktorer bidrager til denne fejl:
- En forkert returtype (bør være
double); - Brug af forkert format-specifikator (
%d) i funktionenprintf()(bør være%f).
Den korrekte version ville være:
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; }
Dette indebærer, at vi direkte kan tildele funktionens resultat til variabler/arrays eller endda videregive det til andre funktioner. Et eksempel på dette er, hvordan vi brugte resultatet med funktionen printf i ovenstående scenarier.
Formatangivelsen for flydende tal er %f.
Det er også værd at nævne, at en funktion kan indeholde flere return-udsagn, hvor hvert aktiveres under forskellige betingelser.
Tak for dine kommentarer!