Espacios de nombres
Variantes
Acciones

Sentencia return

De cppreference.com
< c‎ | language

Termina la función actual y devuelve el valor especificado a la función del llamante.

Contenido

[editar] Sintaxis

return expresión ; (1)
return ; (2)

[editar] Explicación

1) Evalúa la expresión, termina la función actual y retorna el resultado de la expresión al llamante (el valor devuelto se convierte en el valor de la función llamada de expresión). Sólo es válido si el tipo de retorno de la función no es void.
2) Termina la función actual. Sólo es válido si el tipo de retorno de la función es void.

Si el tipo de la expresión expression es diferente del tipo de retorno de la función, su valor es convertido como si se asignara a un objeto cuyo tipo es el tipo de retorno de la función, excepto que se permite la superposición entre las representaciones de objetos:

struct s { double i; } f(void); // function que retorna struct s
union { struct { int f1; struct s f2; } u1;
        struct { struct s f3; int f4; } u2; } g;
struct s f(void)
{
    return g.u1.f2;
}
int main(void)
{
// g.u2.f3 = g.u1.f2; // comportamiento indefinido (solapamiento en la asignación)
   g.u2.f3 = f();     // bien definido
}

Si el tipo de retorno es un tipo flotante real, el resultado puede ser representado en mayor rango y precisión que el implicado por el nuevo tipo. Llegar al final de una función distinta de main es equivalente a return; Para main, véase la función main. Llegar al final de cualquier otra función de retorno de valor es un comportamiento indefinido, pero sólo si el resultado de la función se utiliza en una expresión.

Ejecutar la sentencia return en una función no-return es un comportamiento indefinido.

[editar] Terminos Clave

return

[editar] Ejemplo

#include <stdio.h>
 
void fa(int i)
{
    if (i == 2)
       return;
    printf("fa():   %d\n", i);
} // implied return;
 
int fb(int i)
{
    if (i > 4)
       return 4;
    printf("fb():   %d\n", i);
    return 2;
}
 
int main(void)
{
    fa(2);
    fa(1);
    int i = fb(5);   // el valor de retorno 4 utilizado para inicializar i
    i = fb(i);       // el valor de retorno 2 utilizado en la asignación de rhs
    printf("main(): %d\n", i);
}

Salida:

fa():   1
fb():   4
main(): 2

[editar] Referencias

  • Standard C11 (ISO/IEC 9899:2011):
  • 6.8.6.4 The return statement (p: 154)
  • Standard C99 (ISO/IEC 9899:1999):
  • 6.8.6.4 The return statement (p: 139)
  • Standard C89/C90 (ISO/IEC 9899:1990):
  • 3.6.6.4 The return statement

[editar] Véase también

Documentación de C++ para Sentencia return