return (C)

  • 06/10/2020
  • 4 minuty ke čtení
    • c
    • n
    • M
    • g

return prohlášení ukončí provádění funkce a vrátí řízení do volající funkce. Spuštění se obnoví ve funkci volání v bodě bezprostředně po volání. Příkaz return může vrátit hodnotu volající funkci. Pro více informací, viz typ návratu.

Syntax

jump-prohlášení:
return expressionopt ;

hodnota výrazu, pokud je přítomen, je vrácena volající funkci. Pokud je výraz vynechán, návratová hodnota funkce není definována. Výraz, pokud je přítomen, je vyhodnocen a poté převeden na typ vrácený funkcí. Když return prohlášení obsahuje vyjádření funkcí, které mají void návratový typ, kompilátor generuje varování, a výraz není vyhodnocen.

Pokud ne, return prohlášení se objeví v definici funkce, ovládání se automaticky vrátí do volající funkce po posledním prohlášení z názvem funkce se provede. V tomto případě není návratová hodnota volané funkce definována. Pokud má funkce jiný typ návratu než void, je to vážná chyba a kompilátor vytiskne varovnou diagnostickou zprávu. Pokud má funkce void návratový typ, je toto chování v pořádku, ale může být považováno za špatný styl. Použijte prostý return prohlášení, aby byl váš záměr jasný.

jako správná technická praxe vždy zadejte typ návratu pro své funkce. Pokud není požadována návratová hodnota, deklarujte, že funkce má void návratový typ. Pokud není zadán návratový typ, kompilátor C předpokládá výchozí návratový typ int.

mnoho programátorů používá závorky k uzavření argumentu výrazu příkazu return. C však nevyžaduje závorky.

kompilátor může vydat varování diagnostickou zprávu o nedosažitelný kód, pokud zjistí jakékoli prohlášení umístěny po return prohlášení.

ve funkci main je příkaz a výraz return volitelný. Co se stane s vrácenou hodnotou, pokud je zadána, závisí na implementaci. Specifické pro Microsoft: implementace Microsoft C vrací hodnotu výrazu procesu, který vyvolal program, například cmd.exe. Pokud není dodán výrazreturn, vrátí Microsoft C runtime hodnotu, která označuje úspěch (0) nebo selhání(nenulová hodnota).

příklad

tento příklad je JEDEN program v několika částech. Ukazuje příkaz return a jak se používá jak k ukončení provádění funkcí, tak k navrácení hodnoty.

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

funkce square vrací čtverec svého argumentu v širším typu, aby se zabránilo aritmetické chybě. Specifické pro Microsoft: v implementaci Microsoft C je typ long long dostatečně velký, aby držel produkt dvou hodnot int bez přetečení.

závorek return výraz v square jsou hodnoceny jako součást výraz, a nejsou vyžadovány return prohlášení.

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 funkce vrací poměr dvou int argumenty jako plovoucí-bod double hodnota. Výraz return je nucen použít operaci s plovoucí desetinnou čárkou odléváním jednoho z operandů do double. V opačném případě by byl použit operátor celočíselného dělení a zlomková část by byla ztracena.

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 volání funkce square s parametrem hodnota INT_MAX, největší celé číslo se znaménkem hodnotu, která se hodí v int. Výsledek long long je uložen v squared a poté vytištěn. report_square funkce void návratový typ, tak to nemá výraz v jeho return prohlášení.

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 volání funkce ratio s parametrem hodnoty 1INT_MAX. Výsledek double je uložen v fraction a poté vytištěn. Funkce report_ratiovoid návratový typ, takže nemusí explicitně vracet hodnotu. Provedení report_ratio „spadne ze dna“ a nevrátí volajícímu žádnou hodnotu.

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

main funkce volá dvě funkce: report_squarereport_ratio. Protože report_square nemá žádné parametry a vrací void, nepřiřazujeme jeho výsledek proměnné. Stejně tak report_ratio vrací void, takže ani neukládáme jeho návratovou hodnotu. Po každém z těchto volání funkcí pokračuje provádění při dalším příkazu. main vrátí hodnotu 0 (obvykle se používá k hlášení úspěch) ukončit program.

Chcete-li zkompilovat příklad, vytvořte soubor zdrojového kódu s názvem C_return_statement.c. Poté zkopírujte celý příkladový kód v uvedeném pořadí. Uložte soubor a zkompilovat v Developer okno příkazového řádku pomocí příkazu:

cl /W4 C_return_statement.c

Pak, chcete-li spustit příklad kódu, zadejte C_return_statement.exe na příkazovém řádku. Výstup příkladu vypadá takto:

Related Posts

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *