return statement
Termina la función actual y retorna el valor especificado a la función llamadora.
Contenidos |
Sintaxis
attr-spec-seq
(opcional)
return
expression
;
|
(1) | ||||||||
attr-spec-seq
(opcional)
return
;
|
(2) | ||||||||
| expression | - | expresión utilizada para inicializar el valor de retorno de la función |
| attr-spec-seq | - |
(C23)
lista opcional de
atributos
, aplicada a la sentencia
return
|
Explicación
Si el tipo de la expresión es diferente del tipo de retorno de la función, su valor es convertido como si fuera mediante asignación a un objeto cuyo tipo es el tipo de retorno de la función, excepto que se permite el solapamiento entre representaciones de objetos:
struct s { double i; } f(void); // función 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 asignación) g.u2.f3 = f(); // bien definido }
Si el tipo de retorno es un tipo de punto flotante real, el resultado puede representarse con mayor rango y precisión de lo que implica el nuevo tipo.
Alcanzar el final de una función que retorna
void
es equivalente a
return
;
. Alcanzar el final de cualquier otra función que retorna un valor es comportamiento indefinido si el resultado de la función se utiliza en una expresión (se permite descartar dicho valor de retorno). Para
main
, consulte
main
function
.
|
Ejecutar la sentencia
|
(desde C11) |
Palabras clave
Ejemplo
|
Esta sección está incompleta
Razón: mejorar |
#include <stdio.h> void fa(int i) { if (i == 2) return; printf("fa(): %d\n", i); } // retorno implícito; 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 se usa para inicializar i i = fb(i); // el valor de retorno 2 se usa como lado derecho de la asignación printf("main(): %d\n", i); }
Salida:
fa(): 1 fb(): 4 main(): 2
Referencias
- Estándar C17 (ISO/IEC 9899:2018):
-
- 6.8.6.4 La sentencia return (p: 111-112)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 6.8.6.4 La sentencia return (p: 154)
- Estándar C99 (ISO/IEC 9899:1999):
-
- 6.8.6.4 La sentencia return (p: 139)
- Estándar C89/C90 (ISO/IEC 9899:1990):
-
- 3.6.6.4 La sentencia return
Véase también
|
Documentación de C++
para
return
statement
|