return (C)

  • 06/10/2020
  • 4 minutos para leer
    • c
    • n
    • M
    • g
    • S

Un return comunicado termina la ejecución de una función y devuelve el control a la función de llamada. La ejecución se reanuda en la función de llamada en el punto inmediatamente posterior a la llamada. Una instrucción return puede devolver un valor a la función que llama. Para obtener más información, consulte Tipo de retorno.

Sintaxis

instrucción de salto:
return expresionopt ;

El valor de la expresión, si está presente, se devuelve a la función que llama. Si se omite la expresión, el valor devuelto de la función no está definido. La expresión, si está presente, se evalúa y luego se convierte al tipo devuelto por la función. Cuando una instrucción return contiene una expresión en funciones que tienen un tipo de retorno void, el compilador genera una advertencia y la expresión no se evalúa.

Si no aparece la instrucción return en una definición de función, control vuelve automáticamente a la función que llama después de que se ejecute la última instrucción de la función llamada. En este caso, el valor devuelto de la función llamada no está definido. Si la función tiene un tipo de retorno que no sea void, es un error grave y el compilador imprime un mensaje de diagnóstico de advertencia. Si la función tiene un tipo de retorno void, este comportamiento está bien, pero se puede considerar de estilo pobre. Utilice una instrucción return para aclarar su intención.

Como una buena práctica de ingeniería, especifique siempre un tipo de retorno para sus funciones. Si no se requiere un valor de retorno, declare que la función tiene void tipo de retorno. Si no se especifica un tipo de retorno, el compilador de C asume un tipo de retorno predeterminado de int.

Muchos programadores usan paréntesis para encerrar el argumento de expresión de la instrucción return. Sin embargo, C no requiere los paréntesis.

El compilador puede emitir un mensaje de diagnóstico de advertencia sobre el código inalcanzable si encuentra cualquier instrucción colocada después de la instrucción return.

En una función main, la instrucción y expresión return son opcionales. Lo que sucede con el valor devuelto, si se especifica uno, depende de la implementación. Específico de Microsoft: La implementación de Microsoft C devuelve el valor de expresión al proceso que invocó el programa, como cmd.exe. Si no se proporciona ninguna expresión return, el tiempo de ejecución de Microsoft C devuelve un valor que indica éxito (0) o error (un valor distinto de cero).

Ejemplo

Este ejemplo es un programa en varias partes. Muestra la instrucción return y cómo se usa para finalizar la ejecución de la función y, opcionalmente, para devolver un valor.

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

La función square devuelve el cuadrado de su argumento, en un tipo más amplio para evitar un error aritmético. Específico de Microsoft: En la implementación de Microsoft C, el tipo long long es lo suficientemente grande como para contener el producto de dos valores int sin desbordamiento.

Los paréntesis alrededor de la expresión return en squarese evalúan como parte de la expresión y no son requeridos por la instrucción return.

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

El ratio función devuelve el índice de sus dos int argumentos como de punto flotante double valor. La expresión return se ve obligada a usar una operación de punto flotante al lanzar uno de los operandos a double. De lo contrario, se usaría el operador de división entera, y la parte fraccionaria se perdería.

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

El report_square llamadas de función square con un valor del parámetro de INT_MAX, el mayor valor entero con signo de que quepa en un int. El resultado long long se almacena en squared y luego se imprime. La función report_square tiene un tipo de retorno void, por lo que no tiene una expresión en su instrucción return.

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

El report_ratio llamadas de función ratio con los valores de parámetro de 1 y INT_MAX. El resultado double se almacena en fraction y luego se imprime. La función report_ratio tiene un tipo de retorno void, por lo que no necesita devolver explícitamente un valor. La ejecución de report_ratio «se cae de la parte inferior» y no devuelve ningún valor al llamante.

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

El main llamadas de función de dos funciones: report_square y report_ratioreport_square no toma ningún parámetro y devuelve void, no podemos asignar el resultado a una variable. Del mismo modo, report_ratio devuelve void, por lo que tampoco guardamos su valor de retorno. Después de cada una de estas llamadas a funciones, la ejecución continúa en la siguiente instrucción. A continuación, maindevuelve un valor de 0 (que normalmente se usa para informar de éxito) para finalizar el programa.

Para compilar el ejemplo, cree un archivo de código fuente llamado C_return_statement.c. Luego, copie todo el código de ejemplo, en el orden que se muestra. Guarde el archivo y compílelo en una ventana del símbolo del sistema del desarrollador mediante el comando:

cl /W4 C_return_statement.c

Luego, para ejecutar el código de ejemplo, ingrese C_return_statement.exe en el símbolo del sistema. La salida del ejemplo se ve así:

Related Posts

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *