Deklarasjon, Type og Retur
Fra forrige leksjon lærte du den grunnleggende oppbygningen av funksjoner:
main.c
123456func_type func_name(arguments_placeholder) { // The core functionality of the function // The resulting outcome after function execution return function_output; }
Deklarasjon
Før du kan bruke en funksjon, må den deklareres. Å kalle en funksjon før den er deklarert vil føre til en feil.
Du kan enten deklarere hele funksjonen samtidig med definisjonen (som vist ovenfor), eller bruke en prototype, som vi vil omtale som et tillegg på slutten av dette segmentet.
Funksjonstyper og returverdier
Funksjonens type informerer kompilatoren om datatypen til funksjonens resultat. For eksempel, hvis funksjonen vår beregner summen av to heltall, forventer vi et heltall som resultat.
main.c
12345678int sumFunction() { int number1 = 6; int number2 = 10; int result = number1 + number2; return result; }
Et misforhold mellom datatypen og returtypen kan føre til at funksjonen (eller til og med hele programmet) ikke fungerer som forventet.
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 }
Når du summerer ikke-heltallsverdier, forventer du et presist resultat. Men på grunn av inkonsistens i typen blir resultatet feilaktig.
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 hovedfaktorer bidrar til denne feilen:
- Feil returtype (skal være
double); - Feil formatspesifikator (
%d) brukt iprintf()-funksjonen (skal være%f).
Den korrekte versjonen vil 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 innebærer at vi kan tilordne funksjonens resultat direkte til variabler/arrayer eller til og med sende det videre til andre funksjoner. Et eksempel på dette er hvordan vi brukte resultatet med printf-funksjonen i eksemplene ovenfor.
Formatspesifikatoren for flyttall er %f.
Det er også verdt å nevne at en funksjon kan inneholde flere return-setninger, hvor hver aktiveres under ulike betingelser.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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
Deklarasjon, Type og Retur
Sveip for å vise menyen
Fra forrige leksjon lærte du den grunnleggende oppbygningen av funksjoner:
main.c
123456func_type func_name(arguments_placeholder) { // The core functionality of the function // The resulting outcome after function execution return function_output; }
Deklarasjon
Før du kan bruke en funksjon, må den deklareres. Å kalle en funksjon før den er deklarert vil føre til en feil.
Du kan enten deklarere hele funksjonen samtidig med definisjonen (som vist ovenfor), eller bruke en prototype, som vi vil omtale som et tillegg på slutten av dette segmentet.
Funksjonstyper og returverdier
Funksjonens type informerer kompilatoren om datatypen til funksjonens resultat. For eksempel, hvis funksjonen vår beregner summen av to heltall, forventer vi et heltall som resultat.
main.c
12345678int sumFunction() { int number1 = 6; int number2 = 10; int result = number1 + number2; return result; }
Et misforhold mellom datatypen og returtypen kan føre til at funksjonen (eller til og med hele programmet) ikke fungerer som forventet.
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 }
Når du summerer ikke-heltallsverdier, forventer du et presist resultat. Men på grunn av inkonsistens i typen blir resultatet feilaktig.
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 hovedfaktorer bidrar til denne feilen:
- Feil returtype (skal være
double); - Feil formatspesifikator (
%d) brukt iprintf()-funksjonen (skal være%f).
Den korrekte versjonen vil 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 innebærer at vi kan tilordne funksjonens resultat direkte til variabler/arrayer eller til og med sende det videre til andre funksjoner. Et eksempel på dette er hvordan vi brukte resultatet med printf-funksjonen i eksemplene ovenfor.
Formatspesifikatoren for flyttall er %f.
Det er også verdt å nevne at en funksjon kan inneholde flere return-setninger, hvor hver aktiveres under ulike betingelser.
Takk for tilbakemeldingene dine!