¿Qué contrato establece el tipo de retorno declarado de una función que no es void?
void
La persona que llama siempre recibe una cadena, independientemente de la declaración.
El valor enviado mediante return debe ser compatible con el tipo de retorno declarado.
return
La función nunca puede usar una instrucción return con un valor.
Cada parámetro debe tener exactamente el mismo tipo que el tipo de retorno.