Que contrato o tipo de retorno declarado de uma função diferente de void estabelece?
void
O valor enviado por return deve ser compatível com o tipo de retorno declarado.
return
O chamador sempre recebe uma string, independentemente da declaração.
A função nunca pode usar uma instrução return com um valor.
Cada parâmetro deve ter exatamente o mesmo tipo que o tipo de retorno.