Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Deklaration, Typ och Retur | Funktioner
C-Grunder

bookDeklaration, Typ och Retur

Från vår föregående lektion lärde du dig den grundläggande strukturen för 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

Innan en funktion kan användas måste den deklareras. Att anropa en funktion innan den har deklarerats leder till ett fel.

Du kan antingen deklarera hela funktionen samtidigt som dess definition (som visats ovan) eller använda en prototyp, vilket vi kommer att ta upp som en bonus i slutet av detta avsnitt.

Funktionstyper och returvärden

Funktionens typ informerar kompilatorn om datatypen för funktionens resultat. Om vår funktion till exempel beräknar summan av två heltal, förväntar vi oss ett heltal som resultat.

main.c

main.c

copy
12345678
int sumFunction() { int number1 = 6; int number2 = 10; int result = number1 + number2; return result; }

En avvikelse mellan datatypen och returtypen kan göra att funktionen (eller till och med hela programmet) fungerar felaktigt.

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 }

Vid summering av icke-heltal förväntas ett precist resultat. Men på grund av inkonsekvens i datatyper blir resultatet felaktigt.

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; }

Två huvudsakliga faktorer bidrar till detta fel:

  • Felaktig returtyp (ska vara double);
  • Användning av fel format-specifier (%d) i funktionen printf() (ska vara %f).

Den korrekta versionen skulle vara:

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; }

Detta innebär att vi direkt kan tilldela funktionens resultat till variabler/arrayer eller till och med skicka det till andra funktioner. Ett exempel på detta är hur vi använde resultatet med funktionen printf i ovanstående scenarier.

Note
Notera

Format-specifikatorn för flyttal är %f.

Det är också värt att nämna att en funktion kan innehålla flera return-satser, där varje aktiveras under olika villkor.

question mark

Du har konstruerat funktionen count, hur skulle du anropa den i funktionen main?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 2

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

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

bookDeklaration, Typ och Retur

Svep för att visa menyn

Från vår föregående lektion lärde du dig den grundläggande strukturen för 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

Innan en funktion kan användas måste den deklareras. Att anropa en funktion innan den har deklarerats leder till ett fel.

Du kan antingen deklarera hela funktionen samtidigt som dess definition (som visats ovan) eller använda en prototyp, vilket vi kommer att ta upp som en bonus i slutet av detta avsnitt.

Funktionstyper och returvärden

Funktionens typ informerar kompilatorn om datatypen för funktionens resultat. Om vår funktion till exempel beräknar summan av två heltal, förväntar vi oss ett heltal som resultat.

main.c

main.c

copy
12345678
int sumFunction() { int number1 = 6; int number2 = 10; int result = number1 + number2; return result; }

En avvikelse mellan datatypen och returtypen kan göra att funktionen (eller till och med hela programmet) fungerar felaktigt.

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 }

Vid summering av icke-heltal förväntas ett precist resultat. Men på grund av inkonsekvens i datatyper blir resultatet felaktigt.

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; }

Två huvudsakliga faktorer bidrar till detta fel:

  • Felaktig returtyp (ska vara double);
  • Användning av fel format-specifier (%d) i funktionen printf() (ska vara %f).

Den korrekta versionen skulle vara:

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; }

Detta innebär att vi direkt kan tilldela funktionens resultat till variabler/arrayer eller till och med skicka det till andra funktioner. Ett exempel på detta är hur vi använde resultatet med funktionen printf i ovanstående scenarier.

Note
Notera

Format-specifikatorn för flyttal är %f.

Det är också värt att nämna att en funktion kan innehålla flera return-satser, där varje aktiveras under olika villkor.

question mark

Du har konstruerat funktionen count, hur skulle du anropa den i funktionen main?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 2
some-alt