bevallását (C)

  • 06/10/2020
  • 4 perc olvasni
    • c
    • n
    • M
    • g
    • S

return nyilatkozat véget ér a kivégzését egy funkciót, majd visszaadja a vezérlést a hívó funkciót. A végrehajtás a hívásfunkcióban folytatódik a hívást közvetlenül követő ponton. Areturn utasítás visszatérhet egy értéket a hívó függvény. További információkért lásd: visszatérési típus.

jump-statement:
return expresszionopt ;

a kifejezés, ha jelen van, visszatér a hívási funkcióhoz. Ha a kifejezés elhagyásra kerül, a függvény visszatérési értéke nem definiált. A kifejezés, ha jelen van, kiértékelésre kerül, majd átalakításra kerül a függvény által visszaküldött típusra. Ha egyreturn utasítás olyan függvényekben tartalmaz egy kifejezést, amelyek void visszatérési típusúak, a fordító figyelmeztetést generál, és a kifejezés NEM kerül kiértékelésre.

ha nemreturn utasítás jelenik meg egy függvénydefinícióban, akkor a vezérlő automatikusan visszatér a hívófunkcióhoz, miután a hívott függvény utolsó kijelentése végrehajtásra került. Ebben az esetben a hívott függvény visszatérési értéke nem definiált. Ha a függvénynek a void – tól eltérő visszatérési típusa van, akkor ez egy komoly hiba, a fordító pedig figyelmeztető diagnosztikai üzenetet nyomtat. Ha a függvénynek void visszatérési típusa van, akkor ez a viselkedés rendben van, de rossz stílusnak tekinthető. Használjon egyszerű return nyilatkozatot, hogy világossá tegye szándékát.

jó mérnöki gyakorlatként mindig adja meg a funkciók visszatérési típusát. Ha nincs szükség visszatérési értékre, állapítsa meg, hogy a függvény void visszatérési típus. Ha nincs megadva visszatérési típus, a C fordító a intalapértelmezett visszatérési típusát feltételezi.

sok programozó zárójeleket használ a return utasítás kifejezés Argumentumának csatolásához. A C azonban nem igényli a zárójeleket.

a fordító figyelmeztető diagnosztikai üzenetet adhat ki az elérhetetlen kódról, ha a return utasítás után elhelyezett kijelentéseket talál.

a mainfüggvényben areturn nyilatkozat és kifejezés választható. Mi történik a visszaküldött értékkel, ha meg van adva, a végrehajtástól függ. Microsoft-specifikus: a Microsoft C implementáció visszaadja a kifejezés értékét a programra hivatkozó folyamathoz, például a cmd.exe. Ha nincs return kifejezés, akkor a Microsoft C futásidejű értéke olyan értéket ad vissza, amely jelzi a sikert (0) vagy a hibát (nem nulla érték).

példa

Ez a példa egy program több részből áll. Bemutatja a return utasítást, valamint azt, hogy hogyan használják mind a funkció végrehajtásának befejezéséhez, mind pedig adott esetben egy érték visszaadásához.

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

a square függvény az argumentum négyzetét adja vissza szélesebb típusban, hogy megakadályozza a számtani hibát. Microsoft-specifikus: a Microsoft C implementációban a long longtípus elég nagy ahhoz, hogy két int érték termékét túlcsordulás nélkül tartsa.

areturnsquare kifejezés zárójelét a kifejezés részeként értékelik, és areturn utasítás nem írja elő.

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

a ratio függvény két int Argumentumának arányát adja vissza lebegőpontként double érték. Areturn kifejezés egy lebegőpontos műveletet kényszerít arra, hogy az egyik operandust double – ra öntse. Ellenkező esetben az egész Osztás operátort használnák, a frakcionált rész pedig elvész.

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

The report_square függvényhívások square a INT_MAX paraméterértékével a legnagyobb aláírt egész szám, amely egy int. Along long eredményt asquared tárolja, majd kinyomtatja. Areport_square függvénynekvoid visszatérési típusa van, így nincs kifejezés areturn nyilatkozatában.

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

The report_ratio függvényhívások ratio1 és INT_MAXdiv>. Adouble eredményt afraction tárolja, majd kinyomtatja. Areport_ratio függvénynekvoid visszatérési típusa van, így nem kell kifejezetten visszaadni egy értéket. report_ratio “leesik az aljáról”, és nem ad vissza értéket a hívónak.

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

The main function calls two functions: report_square and report_ratio. Mivel a report_square nem vesz fel semmilyen paramétert és nem adja vissza a void értéket, nem rendeljük az eredményét egy változóhoz. Hasonlóképpen, report_ratiovisszatér void, tehát a visszatérési értékét sem mentjük el. Ezen funkcióhívások mindegyike után a végrehajtás a következő nyilatkozatban folytatódik. Ezután amain0 értéket ad vissza (általában a siker bejelentésére használják) a program befejezéséhez.

a példa összeállításához hozzon létre egy C_return_statement.cnevű forráskódfájlt. Ezután másolja az összes példakódot a megjelenített sorrendben. Mentse el a fájlt, majd fordítsa le egy fejlesztői parancssor ablakba a következő paranccsal:

cl /W4 C_return_statement.c

ezután a példakód futtatásához írja be a C_return_statement.exe parancsot. A példa kimenete így néz ki:

Related Posts

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük