Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Deklaration, Type og Retur | Funktioner
C-Grundlæggende

bookDeklaration, Type og Retur

Fra vores forrige lektion lærte du den grundlæggende opbygning af funktioner:

main.c

main.c

copy
123456
func_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

main.c

copy
12345678
int 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

main.c

copy
12345678
int 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

main.c

copy
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 funktionen printf() (bør være %f).

Den korrekte version ville være:

main.c

main.c

copy
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.

Note
Bemærk

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.

question mark

Du har oprettet funktionen count, hvordan ville du kalde den i main-funktionen?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 2

Spørg AI

expand

Spørg AI

ChatGPT

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

bookDeklaration, Type og Retur

Stryg for at vise menuen

Fra vores forrige lektion lærte du den grundlæggende opbygning af funktioner:

main.c

main.c

copy
123456
func_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

main.c

copy
12345678
int 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

main.c

copy
12345678
int 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

main.c

copy
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 funktionen printf() (bør være %f).

Den korrekte version ville være:

main.c

main.c

copy
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.

Note
Bemærk

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.

question mark

Du har oprettet funktionen count, hvordan ville du kalde den i main-funktionen?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 5. Kapitel 2
some-alt