Converting an expression from one type to another is known as type-conversion. This can be done either implicitly or explicitly.
An implicit conversion is performed automatically by the compiler when an expression needs to be converted into one of its compatible types. For example, any conversions between the primitive data types can be done implicitly.
long a = 5; // int implicitly converted to longdouble b = a; // long implicitly converted to double
These implicit primitive conversions can be further grouped into two kinds: promotion and demotion. Promotion occurs when an expression gets implicitly ...