Почему при приведении int c = 10000 к типу byte, значение переменной становится равно 16, а не 128, максимальному значению byte?
int c = 10000;
byte d = (byte) c;
System.out.println(d);
Ответ
Вы не вполне правильно понимаете, как происходит приведение типов.
При приведении int к byte не происходит вычисление «наилучшего приближения». Происходит по-другому: «старшие» байты просто отбрасываются.
10000 = 0x2710 состоит из двух байт: 0x27 и 0x10. Старший байт отбрасывается, остаётся младший 0x10 = 16.
Комментариев нет:
Отправить комментарий