Määrittely, Tyyppi ja Palautus
Edellisestä oppitunnista opit funktioiden perusrakenteen:
main.c
123456func_type func_name(arguments_placeholder) { // The core functionality of the function // The resulting outcome after function execution return function_output; }
Määrittely
Ennen funktion käyttämistä se täytyy määritellä. Funktion kutsuminen ennen sen määrittelyä aiheuttaa virheen.
Voit joko määritellä koko funktion samanaikaisesti sen toteutuksen kanssa (kuten yllä on esitetty) tai käyttää prototyyppiä, johon palaamme lyhyesti tämän osion lopussa.
Funktioiden tyypit ja paluuarvot
Funktion tyyppi ilmoittaa kääntäjälle funktion tuloksen tietotyypin. Esimerkiksi, jos funktio laskee kahden kokonaisluvun summan, odotetaan tulokseksi kokonaislukua.
main.c
12345678int sumFunction() { int number1 = 6; int number2 = 10; int result = number1 + number2; return result; }
Tietotyypin ja paluuarvon tyypin yhteensopimattomuus voi aiheuttaa funktion (tai jopa koko ohjelman) virheellisen toiminnan.
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 }
Kun lasketaan ei-kokonaislukuja, odotetaan tarkkaa tulosta. Tyypin epäyhtenäisyyden vuoksi tulos on kuitenkin virheellinen.
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; }
Kaksi pääasiallista tekijää aiheuttaa tämän virheen:
- Väärä paluuarvon tyyppi (tulisi olla
double); - Väärän muotoilumääreen (
%d) käyttöprintf()-funktiossa (tulisi olla%f).
Oikea versio olisi:
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; }
Tämä tarkoittaa, että funktion tulos voidaan suoraan sijoittaa muuttujille/taulukoihin tai jopa välittää muille funktioille. Esimerkkinä tästä on, kuinka käytimme tulosta printf-funktion kanssa yllä olevissa tilanteissa.
Muotoilumäärite liukuluvuille on %f.
On myös syytä mainita, että funktiossa voi olla useita return-lauseita, jotka aktivoituvat eri ehdoilla.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
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
Määrittely, Tyyppi ja Palautus
Pyyhkäise näyttääksesi valikon
Edellisestä oppitunnista opit funktioiden perusrakenteen:
main.c
123456func_type func_name(arguments_placeholder) { // The core functionality of the function // The resulting outcome after function execution return function_output; }
Määrittely
Ennen funktion käyttämistä se täytyy määritellä. Funktion kutsuminen ennen sen määrittelyä aiheuttaa virheen.
Voit joko määritellä koko funktion samanaikaisesti sen toteutuksen kanssa (kuten yllä on esitetty) tai käyttää prototyyppiä, johon palaamme lyhyesti tämän osion lopussa.
Funktioiden tyypit ja paluuarvot
Funktion tyyppi ilmoittaa kääntäjälle funktion tuloksen tietotyypin. Esimerkiksi, jos funktio laskee kahden kokonaisluvun summan, odotetaan tulokseksi kokonaislukua.
main.c
12345678int sumFunction() { int number1 = 6; int number2 = 10; int result = number1 + number2; return result; }
Tietotyypin ja paluuarvon tyypin yhteensopimattomuus voi aiheuttaa funktion (tai jopa koko ohjelman) virheellisen toiminnan.
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 }
Kun lasketaan ei-kokonaislukuja, odotetaan tarkkaa tulosta. Tyypin epäyhtenäisyyden vuoksi tulos on kuitenkin virheellinen.
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; }
Kaksi pääasiallista tekijää aiheuttaa tämän virheen:
- Väärä paluuarvon tyyppi (tulisi olla
double); - Väärän muotoilumääreen (
%d) käyttöprintf()-funktiossa (tulisi olla%f).
Oikea versio olisi:
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; }
Tämä tarkoittaa, että funktion tulos voidaan suoraan sijoittaa muuttujille/taulukoihin tai jopa välittää muille funktioille. Esimerkkinä tästä on, kuinka käytimme tulosta printf-funktion kanssa yllä olevissa tilanteissa.
Muotoilumäärite liukuluvuille on %f.
On myös syytä mainita, että funktiossa voi olla useita return-lauseita, jotka aktivoituvat eri ehdoilla.
Kiitos palautteestasi!