Implicit Conversions
Implicit conversions occur when mixed type expressions
are evaluated or when the actual arguments in a function
call do not match the formal arguments of the function
prototype.
First, the compiler tries to apply a trivial conversion.
If there is no match, then the compiler attempts to apply a
promotion.
If there is no match, then the compiler attempts to apply a
built-in type conversion.
If there is no match, then the compiler attempts to apply a
user defined type conversion.
If there is no match, the compiler generates an error.