In Implicit casting compiler itself solves the issue of casting for example consider the code
int main()
{
int a;//2 bytes
float b;//44 bytes
char c;//1 byte
}
now if we write b=c means we want to store 1 byte of data in 4byte, we can do so but 3bytes will be wasted since there is no data lost here and generally we do not bother about memory,so there is no issue in this....but compiler would not accept this sso compiler itself do type casting like this b=(float)c....this is called implicit type casting.
Now consider another case suppose we write c=b;means we want to store 4bytes in 1byte,if we do so then there iss data loss so some compilers will give an error message,then user have to do typecasting himself/herself this is called explicit typ casting.For example: c=(char)b but some data will be lost