Почему числу с плав точкой можно присвоить целочисленное значение?
float val = 10;
//а не float val = 10.0f;
Ведь по умолчанию целочисленным значениям даётся тип int, short и тд(в зависимости от размера). А с плав точкой по умолчанию double. А если мы хотим изменить тип по умолчанию просто указываем суффикс в конце числа. Тогда почему можно не указывать при присвоении целочисл типа к типу с плав точкой?
Ответы (1 шт):
Дело в том, что если тип T можно без потерь преобразовать в тип T2, то скорее всего существует неявное преобразование T2(T v). При преобразовании int в float никакие данные не теряются (любое число, которое можно представить в виде int можно так же представить в виде float). Однако float в int неявно преобразовать не получится, для этого существует явное преобразование:
int x = (int)4.5f
При преобразовании float в int мы теряем дробную часть, поэтому нам необходимо явно указать, что мы осознаём все потери и готовы пойти на них.
Вы так же можете определить явное и неявное преобразование для своих типов