В более общем смысле (к ответу pmg) бывают случаи, когда преобразование типов может быть выполнено безопасным образом, и бывают случаи, когда это невозможно.Кроме того, бывают случаи, когда он может делать что-то отличное от того, что вы хотите.
Приведение типа требуется , когда это может указывать на ошибку программиста.Указатели являются хорошим примером этого.Если у вас есть указатель на символ и вы назначаете его указателю на целое число, то для этого могут быть веские причины, но если это сделано случайно, вы можете получить ошибки шины или недопустимые результаты при разыменовании этого указателяна некоторых очень старых платформах размеры указателей были разными!).
Существуют обширные правила, когда происходит автоматическое преобразование типов и как это происходит.Некоторые люди предпочли бы бросить все, чем изучать правила, чтобы избежать нежелательных событий.