Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > арифметические операции с Byte/byte |
Автор: underW 3.10.2010, 17:02 | ||||||||||||
Есть вот такой код:
В книжках пишут, что:
Разбирая код, видим, что постфиксный/префиксный инкремент/декремент выполняются правильно, ошибок нет. Инкремент и декремент - это операторы, соответственно
это есть выражения, но как видим, преобразования к int не происходит. Почему? Разбираем дальше: используем в выражении унарный оператор +(-)
все строки содержат ошибку, ибо происходит преобразование к типу int. Хорошо.Вопросов нет. Выражение с бинарным оператором +(-)
Ошибка, тоже самое преобразование к int.Все ясно. И последний кусок кода:
строка 1 содержит ошибку (The operator += is undefined for the argument type(s) Byte, int), строка 2 выполняется правильно. Тут вообще у меня нету логического объяснения, почему мы получаем ошибку. Прошу помощи. |
Автор: le_chat 3.10.2010, 21:40 | ||||
байт код этих операций одинаковый. следовательно при a++ преобразование к int происходит. В последнем случае используется автобоксинг. Если разложить все операции, то станет понятно почему так происходит:
|
Автор: underW 4.10.2010, 09:40 |
спасибо. |