Я знаю что нужно выполнить преобразование типов, но хотел бы разобраться в механизме.
Почему этот код выдает ошибку?
byte a = 2;
byte b = a + 2; // ошибка
Ответ
Дело в том, что операции с байтами возвращают в результате int. Это не совсем очевидно на первый взгляд, но имеет смысл. Дело в том, что byte - довольно маленькая величина (от 0 до 255), и во многих случаях в результате арифметических операций с двумя байтовыми переменными, возникает переполнение, благодаря чему результат не поместился бы в переменную типа byte. Это явно не очень ожидаемое поведение (например при сложении 200 и 60 получилось бы не 260, ка можно было бы ожидать, а 4), поэтому было решено, что byte + byte = int
Комментариев нет:
Отправить комментарий