Instructie return (C)

  • 06/10/2020
  • 4 minuten te lezen
    • c
    • n
    • M
    • g
    • S

Een return verklaring eindigt met de uitvoering van een functie, en keert u terug naar de aanroepende functie. De uitvoering wordt hervat in de aanroepfunctie op het punt onmiddellijk na de oproep. Eenreturn statement kan een waarde teruggeven aan de aanroepende functie. Zie retourtype voor meer informatie.

syntaxis

jump-statement:
return expressionopt ;

de waarde van de expressie, indien aanwezig, wordt geretourneerd naar de oproepende functie. Als expressie wordt weggelaten, is de retourwaarde van de functie niet gedefinieerd. De expressie, indien aanwezig, wordt geëvalueerd en vervolgens geconverteerd naar het type dat door de functie wordt geretourneerd. Wanneer eenreturn statement een expressie bevat in functies die eenvoid return type hebben, genereert de compiler een waarschuwing en wordt de expressie niet geëvalueerd.

als er geenreturn statement verschijnt in een functiedefinitie, keert control automatisch terug naar de aanroepende functie nadat de laatste statement van de aangeroepen functie is uitgevoerd. In dit geval is de retourwaarde van de aangeroepen functie niet gedefinieerd. Als de functie een ander retourtype heeft dan void, is het een ernstige bug, en de compiler drukt een waarschuwingsdiagnostisch bericht af. Als de functie een void return type heeft, is dit gedrag in orde, maar kan als slechte stijl worden beschouwd. Gebruik een eenvoudigereturn verklaring om uw intentie duidelijk te maken.

als een goede engineering praktijk, geef altijd een return type voor uw functies. Als een retourwaarde niet vereist is, verklaar dan dat de functie void retourtype heeft. Als een return type niet is opgegeven, neemt de C compiler een standaard return type aan van int.

veel programmeurs gebruiken haakjes om het expressieargument van het return statement in te sluiten. C heeft echter geen haakjes nodig.

de compiler kan een diagnostisch waarschuwingsbericht geven over onbereikbare code als het enige statements vindt geplaatst na de return statement.

In een mainfunctie, zijn de return statement en expressie optioneel. Wat er gebeurt met de geretourneerde waarde, als die wordt opgegeven, hangt af van de implementatie. Microsoft-specifiek: de Microsoft C-implementatie geeft de expressiewaarde terug aan het proces dat het programma aanriep, zoals cmd.exe. Als er geenreturn expressie wordt gegeven, geeft de Microsoft C runtime een waarde terug die succes (0) of mislukking aangeeft (een niet-nulwaarde).

voorbeeld

dit voorbeeld is één programma in meerdere delen. Het toont hetreturn statement, en hoe het zowel wordt gebruikt om de uitvoering van de functie te beëindigen, als optioneel om een waarde te retourneren.

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

de functie square geeft het kwadraat van zijn argument terug, in een breder type om een rekenkundige fout te voorkomen. Microsoft-specifiek: in de Microsoft C-implementatie is het long long type groot genoeg om het product van twee int waarden zonder overflow te bevatten.

de haakjes rond dereturn expressie insquare worden geëvalueerd als onderdeel van de expressie, en zijn niet vereist door dereturn verklaring.

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

de functie ratio geeft de verhouding van zijn twee int argumenten als een floating-point double waarde. De expressie return wordt gedwongen om een floating-point operatie te gebruiken door een van de operanden te gieten op double. Anders zou de integer delingsoperator worden gebruikt en zou het fractionele deel verloren gaan.

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

de report_square functieaanroepen square met een parameterwaarde van INT_MAX, de grootste ondertekende integer waarde die past in een int. Het long long resultaat wordt opgeslagen in squared en vervolgens afgedrukt. De functie report_square heeft een void return type, dus het heeft geen expressie in zijn return statement.

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

de report_ratio functieaanroepen ratio met parameterwaarden van 1 en INT_MAX. Het double resultaat wordt opgeslagen in fraction en vervolgens afgedrukt. De functie report_ratio heeft een void return type, dus het hoeft geen waarde expliciet te retourneren. Uitvoering van report_ratio” valt van de bodem ” en geeft geen waarde terug aan de beller.

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

de functie main roept twee functies aan: report_square en report_ratio. Aangezien report_square geen parameters neemt en void retourneert, kennen we het resultaat niet toe aan een variabele. Op dezelfde manier geeft report_ratiovoid terug, dus we slaan de retourwaarde ook niet op. Na elk van deze functie aanroepen, uitvoering gaat door bij de volgende verklaring. Daarna geeft main een waarde van 0 (meestal gebruikt om succes te rapporteren) om het programma te beëindigen.

om het voorbeeld te compileren, maakt u een broncodebestand aan met de naam C_return_statement.c. Kopieer vervolgens alle voorbeeldcode, in de getoonde volgorde. Sla het bestand op en compileer het in een opdrachtpromptvenster voor ontwikkelaars met de opdracht:

cl /W4 C_return_statement.c

om de voorbeeldcode uit te voeren, voert u C_return_statement.exe achter de opdrachtprompt in. De uitvoer van het voorbeeld ziet er als volgt uit:

Related Posts

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *