#java
double m = (byte) 110_987_654_6299.123_34;
Ответы
Ответ 1
Справедливости ради стоит отметить, что результатом (значением m) будет -1.0, а не -1. Происходят 3 действия: double число 110_987_654_6299.123_34 приводится к int. Результатом будет 2147483647 int число 2147483647 приводится к byte. Результатом будет -1 byte число -1 приводится к double. Результатом будет -1.0 Почему приведение работает именно так - можно прочитать в документации. Если вкратце, то: при приведении double к byte (правая часть выражения) сначала происходит приведение double к int, и только затем - int к byte приведение double к int в случае превышения допустимого int значения возвращает максимальное значение int приведение int к byte просто берёт последние 8 бит из int
Комментариев нет:
Отправить комментарий