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