palautuslauseke (C)

  • 06/10/2020
  • 4 minuuttia luettavaksi
  • C
  • n
  • m
  • g s

a returnstatement ends Funktion suoritus, ja palauttaa kontrollin kutsutoiminnolle. Suoritus jatkuu kutsutoiminnossa heti kutsun jälkeen. return lausuma voi palauttaa arvon kutsufunktiolle. Lisätietoja on kohdassa Palautustyyppi.

syntaksi

jump-statement:
return ekspressionopt ;

lausekkeen arvo, jos läsnä, palautetaan Kutsumustoiminto. Jos lauseke jätetään pois, funktion palautusarvo on määrittelemätön. Jos lauseke on olemassa, se arvioidaan ja muunnetaan funktion palauttamaksi tyypiksi. Kun return lauseke sisältää lausekkeen funktioissa, joilla on void paluutyyppi, kääntäjä tuottaa varoituksen, eikä lauseketta arvioida.

Jos ei return lauseke esiintyy funktion määritelmässä, ohjaus palaa automaattisesti kutsufunktioon, kun kutsutun funktion viimeinen lauseke on suoritettu. Tällöin kutsutun funktion palautusarvo on määrittelemätön. Jos funktiolla on jokin muu palautustyyppi kuin void, kyseessä on vakava vika, ja kääntäjä tulostaa varoittavan vianmääritysviestin. Jos funktiolla on void paluutyyppi, tämä käyttäytyminen on OK, mutta sitä voidaan pitää huonona tyylinä. Käytä tavallista return lausetta tehdäksesi aikeesi selväksi.

hyvänä insinööritapana määrittele aina toiminnoillesi palautustyyppi. Jos palautusarvoa ei tarvita, ilmoitetaan funktiolla olevan void palautustyyppi. Jos palautustyyppiä ei ole määritetty, C-kääntäjä olettaa oletustyypin int.

monet ohjelmoijat käyttävät sulkeita sulkeakseen return lausekkeen lausekkeen. C ei kuitenkaan vaadi sulkuja.

kääntäjä voi antaa varoittavan vianmääritysviestin saavuttamattomasta koodista, jos se löytää return lausuman jälkeen asetettuja väittämiä.

main funktio return lauseke ja lauseke ovat valinnaisia. Mitä tapahtuu palautetulle arvolle, jos sellainen on määritetty, riippuu toteutuksesta. Microsoft-spesifinen: Microsoft C-toteutus palauttaa lausekkeen arvon ohjelmaan kutsuneelle prosessille, kuten cmd.exe. Jos ei return lauseke toimitetaan, Microsoft C runtime palauttaa arvon, joka ilmaisee onnistumista (0) tai epäonnistumista (ei-nolla-arvo).

esimerkki

Tämä esimerkki on YKSI ohjelma useassa osassa. Se osoittaa return lauseke, ja miten sitä käytetään sekä funktion suorittamisen lopettamiseen, että valinnaisesti arvon palauttamiseen.

// C_return_statement.c// Compile using: cl /W4 C_return_statement.c#include <limits.h> // for INT_MAX#include <stdio.h> // for printflong long square( int value ){ // Cast one operand to long long to force the // expression to be evaluated as type long long. // Note that parentheses around the return expression // are allowed, but not required here. return ( value * (long long) value );}

square funktio palauttaa argumenttinsa neliön laajemmalla tyypillä aritmeettisen virheen estämiseksi. Microsoft-spesifinen: Microsoft C-toteutuksessa long long tyyppi on riittävän suuri pitämään kahden int arvon tulon ilman ylivuotoa.

return lauseke square arvioidaan osana lauseketta, eikä return lauseke vaadi niitä.

double ratio( int numerator, int denominator ){ // Cast one operand to double to force floating-point // division. Otherwise, integer division is used, // then the result is converted to the return type. return numerator / (double) denominator;}

ratio funktio palauttaa kahden int argumentit liukulukuna double arvo. return lauseke pakotetaan käyttämään liukulukuoperaatiota valamalla yksi operandeista double. Muussa tapauksessa käytettäisiin kokonaislukujaon operaattoria ja murto-osa menetettäisiin.

void report_square( void ){ int value = INT_MAX; long long squared = 0LL; squared = square( value ); printf( "value = %d, squared = %lld\n", value, squared ); return; // Use an empty expression to return void.}

report_square funktiokutsuja square parametriarvolla INT_MAX suurin allekirjoitettu kokonaisluku, joka sopii intlong long tulos tallennetaan squared, minkä jälkeen tulostetaan. report_square funktiolla on void paluutyyppi, joten sillä ei ole lauseketta return lausekkeessa.

void report_ratio( int top, int bottom ){ double fraction = ratio( top, bottom ); printf( "%d / %d = %.16f\n", top, bottom, fraction ); // It's okay to have no return statement for functions // that have void return types.}

report_ratio funktiokutsuja ratio parametriarvoilla 1 ja INT_MAXdouble tulos tallennetaan fraction, minkä jälkeen tulostetaan. report_ratio funktiolla on void paluutyyppi, joten arvoa ei tarvitse erikseen palauttaa. Suoritus report_ratio” putoaa pohjalta ” eikä palauta mitään arvoa soittajalle.

int main(){ int n = 1; int x = INT_MAX; report_square(); report_ratio( n, x ); return 0;}

main funktio kutsuu kahta funktiota: report_square ja report_ratio. Koska report_square ei ota parametreja ja palauttaa void, emme anna sen tulosta muuttujalle. Samoin report_ratio palauttaa void, joten emme myöskään tallenna sen palautusarvoa. Jokaisen funktiokutsun jälkeen suoritus jatkuu seuraavassa lauseessa. Sitten main palauttaa arvon 0 (käytetään tyypillisesti menestyksen raportointiin) ohjelman lopettamiseksi.

esimerkin kääntämiseksi luo lähdekooditiedosto, jonka nimi on C_return_statement.c. Sitten, Kopioi kaikki esimerkkikoodi, esitetyssä järjestyksessä. Tallenna tiedosto ja käännä se kehittäjän komentokehoteikkunaan komennolla:

cl /W4 C_return_statement.c

tämän jälkeen, ajaaksesi esimerkkikoodin, Kirjoita C_return_statement.exe komentokehotteeseen. Esimerkin ulostulo näyttää tältä:

Related Posts

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *