The resulting values are copied into the corresponding
parameters, performing any required type coersion.
The statements in the function's body are evaluated in order.
When a return statement is evaluated, the value of its argument is
converted to the type of the function's return-type and used as the
function's result.
the calling program continues after "substituting" the function's
returned value in place of the function call.
Details
A function's parameters are new "local" variables -- more on this later.
What if no return statement is evaluated within the function?
When the closing brace of the function is reached, program control returns
back to the calling function.