Istruzione return (C)return Statement (C)

L'istruzione return viene utilizzata per terminare l'esecuzione di una funzione e restituire il controllo alla funzione chiamante.The return statement terminates the execution of a function and returns control to the calling function. Nella funzione chiamante, l'esecuzione riprende dal punto immediatamente successivo alla chiamata.Execution resumes in the calling function at the point immediately following the call. Un'istruzione return può inoltre restituire un valore alla funzione chiamante.A return statement can also return a value to the calling function. Per altre informazioni, vedere Tipo restituito.See Return Type for more information.

SintassiSyntax

jump-statement:jump-statement:
return expression opt;return expression opt;

Il valore di expression, se presente, viene restituito alla funzione chiamante.The value of expression, if present, is returned to the calling function. Se expression non è presente, il valore restituito della funzione è indefinito.If expression is omitted, the return value of the function is undefined. L'espressione, se presente, viene valutata e viene quindi convertita nel tipo restituito dalla funzione.The expression, if present, is evaluated and then converted to the type returned by the function. Se la funzione è dichiarata con tipo restituito void, un'istruzione return che contiene un'espressione genera un avviso e l'espressione non viene valutata.If the function was declared with return type void, a return statement containing an expression generates a warning and the expression is not evaluated.

Se nessuna istruzione return viene visualizzata in una definizione di funzione, il controllo ritorna automaticamente alla funzione chiamante dopo che l'ultima istruzione della funzione chiamata viene eseguita.If no return statement appears in a function definition, control automatically returns to the calling function after the last statement of the called function is executed. In questo caso, il valore restituito della funzione chiamata è indefinito.In this case, the return value of the called function is undefined. Se il valore restituito non è necessario, dichiarare la funzione per avere un tipo restituito void; in caso contrario, il tipo restituito predefinito è int.If a return value is not required, declare the function to have void return type; otherwise, the default return type is int.

Molti programmatori usano le parentesi per racchiudere l'argomento expression dell'istruzione return.Many programmers use parentheses to enclose the expression argument of the return statement. Per il linguaggio C, tuttavia, non sono necessarie le parentesi.However, C does not require the parentheses.

In questo esempio viene illustrata l'istruzione return:This example demonstrates the return statement:

#include <limits.h>  
#include <stdio.h>  

void draw( int i, long long ll );  
long long sq( int s );  

int main()  
{  
    long long y;  
    int x = INT_MAX;  

    y = sq( x );  
    draw( x, y );  
    return x;  
}  

long long sq( int s )  
{  
    // Note that parentheses around the return expression   
    // are allowed but not required here.  
    return( s * (long long)s );  
}  

void draw( int i, long long ll )  
{  
    printf( "i = %d, ll = %lld\n", i, ll );  
    return;  
}  

In questo esempio, la funzione main chiama due funzioni: sq e draw.In this example, the main function calls two functions: sq and draw. La funzione sq restituisce il valore di x * x a main, dove il valore restituito viene assegnato a y.The sq function returns the value of x * x to main, where the return value is assigned to y. Le parentesi attorno all'espressione restituita in sq vengono valutate come parte dell'espressione e non sono richieste dall'istruzione return.The parentheses around the return expression in sq are evaluated as part of the expression, and are not required by the return statement. Poiché l'espressione restituita viene valutata prima di essere convertita nel tipo restituito, sq forza il tipo di espressione sul tipo restituito tramite un cast per impedire un possibile errore di overflow di intero che potrebbe provocare risultati imprevisti.Since the return expression is evaluated before it is converted to the return type, sq forces the expression type to be the return type with a cast to prevent a possible integer overflow, which could lead to unexpected results. La funzione draw viene dichiarata come funzione void.The draw function is declared as a void function. Visualizza i valori dei parametri e quindi l'istruzione return vuota termina la funzione e non restituisce un valore.It prints the values of its parameters and then the empty return statement ends the function and does not return a value. Un tentativo di assegnare il valore restituito da draw provocherebbe la stampa di un messaggio di diagnostica.An attempt to assign the return value of draw would cause a diagnostic message to be issued. La funzione main restituisce quindi il valore x al sistema operativo.The main function then returns the value of x to the operating system.

L'output dell'esempio è analogo al seguente:The output of the example looks like this:

i = 2147483647, ll = 4611686014132420609  

Vedere ancheSee Also

IstruzioniStatements