Krice is right.
Sometimes you write perfectly logical code, but the same code used another way will produce the incorrect behaviour. The compiler doesn't know what you intend so it warnings to tell you that this code may have bugs.
A simple example is converting a float to an int. You lose data doing so, but most of the time thats what you want. So the compiler just reminds you to put explicit type conversion in your code, now the compiler knows what you intended.